MCPcopy
hub / github.com/aio-libs/aiohttp / start

Method start

aiohttp/server.py:213–316  ·  view source on GitHub ↗

Start processing of incoming requests. It reads request line, request headers and request payload, then calls handle_request() method. Subclass has to override handle_request(). start() handles various exceptions in request or response handling. Connection is being c

(self)

Source from the content-addressed store, hash-verified

211
212 @asyncio.coroutine
213 def start(self):
214 """Start processing of incoming requests.
215
216 It reads request line, request headers and request payload, then
217 calls handle_request() method. Subclass has to override
218 handle_request(). start() handles various exceptions in request
219 or response handling. Connection is being closed always unless
220 keep_alive(True) specified.
221 """
222 reader = self.reader
223
224 while True:
225 message = None
226 self._keep_alive = False
227 self._request_count += 1
228 self._reading_request = False
229
230 payload = None
231 try:
232 # read HTTP request method
233 prefix = reader.set_parser(self._request_prefix)
234 yield from prefix.read()
235
236 # start reading request
237 self._reading_request = True
238
239 # start slow request timer
240 if self._timeout and self._timeout_handle is None:
241 now = self._loop.time()
242 self._timeout_handle = self._loop.call_at(
243 ceil(now+self._timeout), self.cancel_slow_request)
244
245 # read request headers
246 httpstream = reader.set_parser(self._request_parser)
247 message = yield from httpstream.read()
248
249 # cancel slow request timer
250 if self._timeout_handle is not None:
251 self._timeout_handle.cancel()
252 self._timeout_handle = None
253
254 # request may not have payload
255 if (message.headers.get(hdrs.CONTENT_LENGTH, 0) or
256 hdrs.SEC_WEBSOCKET_KEY1 in message.headers or
257 'chunked' in message.headers.get(
258 hdrs.TRANSFER_ENCODING, '')):
259 payload = streams.FlowControlStreamReader(
260 reader, loop=self._loop)
261 reader.set_parser(
262 aiohttp.HttpPayloadParser(message), payload)
263 else:
264 payload = EMPTY_PAYLOAD
265
266 yield from self.handle_request(message, payload)
267
268 except asyncio.CancelledError:
269 return
270 except errors.ClientDisconnectedError:

Callers 1

connection_madeMethod · 0.95

Calls 9

handle_requestMethod · 0.95
log_debugMethod · 0.95
handle_errorMethod · 0.95
set_parserMethod · 0.80
unset_parserMethod · 0.80
readMethod · 0.45
getMethod · 0.45
is_eofMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected