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

Method _release

aiohttp/connector.py:347–386  ·  view source on GitHub ↗
(self, key, req, transport, protocol, *, should_close=False)

Source from the content-addressed store, hash-verified

345 return None, None
346
347 def _release(self, key, req, transport, protocol, *, should_close=False):
348 if self._closed:
349 # acquired connection is already released on connector closing
350 return
351
352 acquired = self._acquired[key]
353 try:
354 acquired.remove(transport)
355 except KeyError: # pragma: no cover
356 # this may be result of undetermenistic order of objects
357 # finalization due garbage collection.
358 pass
359 else:
360 if self._limit is not None and len(acquired) < self._limit:
361 waiters = self._waiters[key]
362 while waiters:
363 waiter = waiters.pop(0)
364 if not waiter.done():
365 waiter.set_result(None)
366 break
367
368 resp = req.response
369
370 if not should_close:
371 if self._force_close:
372 should_close = True
373 elif resp is not None:
374 should_close = resp._should_close
375
376 reader = protocol.reader
377 if should_close or (reader.output and not reader.output.at_eof()):
378 transport.close()
379 else:
380 conns = self._conns.get(key)
381 if conns is None:
382 conns = self._conns[key] = []
383 conns.append((transport, protocol, self._loop.time()))
384 reader.unset_parser()
385
386 self._start_cleanup_task()
387
388 @asyncio.coroutine
389 def _create_connection(self, req):

Callers 9

test_releaseMethod · 0.95
test_release_closeMethod · 0.95
__del__Method · 0.80
closeMethod · 0.80
releaseMethod · 0.80

Calls 6

_start_cleanup_taskMethod · 0.95
appendMethod · 0.80
unset_parserMethod · 0.80
at_eofMethod · 0.45
closeMethod · 0.45
getMethod · 0.45