MCPcopy
hub / github.com/benoitc/gunicorn / _async_parse

Method _async_parse

gunicorn/asgi/uwsgi.py:87–109  ·  view source on GitHub ↗

Async version of parse() - reads data then uses sync parsing.

(self)

Source from the content-addressed store, hash-verified

85 return req
86
87 async def _async_parse(self):
88 """Async version of parse() - reads data then uses sync parsing."""
89 # Read 4-byte header
90 header = await self._async_read_exact(4)
91 if len(header) < 4:
92 raise InvalidUWSGIHeader("incomplete header")
93
94 self.modifier1 = header[0]
95 datasize = int.from_bytes(header[1:3], 'little')
96 self.modifier2 = header[3]
97
98 if self.modifier1 != 0:
99 raise UnsupportedModifier(self.modifier1)
100
101 # Read vars block
102 if datasize > 0:
103 vars_data = await self._async_read_exact(datasize)
104 if len(vars_data) < datasize:
105 raise InvalidUWSGIHeader("incomplete vars block")
106 self._parse_vars(vars_data) # Reuse sync method
107
108 self._extract_request_info() # Reuse sync method
109 self._set_body_reader()
110
111 async def _async_read_exact(self, size):
112 """Read exactly size bytes asynchronously."""

Callers 1

parseMethod · 0.80

Calls 6

_async_read_exactMethod · 0.95
_set_body_readerMethod · 0.95
InvalidUWSGIHeaderClass · 0.90
UnsupportedModifierClass · 0.90
_parse_varsMethod · 0.80
_extract_request_infoMethod · 0.80

Tested by

no test coverage detected