Andrew Svetlov added the comment:
> You should try to implement something in aiohttp or even in the application
> to cleanup objects at exit. For example, it's probably wrong if you still
> have tasks when the event loop is closed. Especially if tasks are still
> pending.
The problem is for client API. For server I have more control and implemented
checks like you suggest.
For for client lazy user writes floppy code like:
client = aiohttp.ClientSession()
resp = yield from client.get(url)
text = yield from resp.text()
Client is closed by GC, at the moment is not determined is loop has been closed
or not (GC releases object in non-determenistic way).
So without changes I just cannot use `loop.call_exception_handler()` in
`__del__` methods.
It's not only aiohttp issue but we should get rid of `call_exception_handler()`
reports in asyncio itself for the same reason.
We have `logger` and `warnings` modules usage e.g. in asyncio transports, it's
not safe if transport is not closed properly before interpreter shutdown.
`subprecess` module has tricks for proper destruction like I've used in my
patch.
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue25074>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com