mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
Issue #23243, asyncio: Emit a ResourceWarning when an event loop or a transport
is not explicitly closed. Close also explicitly transports in test_sslproto.
This commit is contained in:
parent
3c0cf05901
commit
978a9afc6a
10 changed files with 104 additions and 10 deletions
|
@ -26,6 +26,7 @@ import threading
|
|||
import time
|
||||
import traceback
|
||||
import sys
|
||||
import warnings
|
||||
|
||||
from . import coroutines
|
||||
from . import events
|
||||
|
@ -333,6 +334,16 @@ class BaseEventLoop(events.AbstractEventLoop):
|
|||
"""Returns True if the event loop was closed."""
|
||||
return self._closed
|
||||
|
||||
# On Python 3.3 and older, objects with a destructor part of a reference
|
||||
# cycle are never destroyed. It's not more the case on Python 3.4 thanks
|
||||
# to the PEP 442.
|
||||
if sys.version_info >= (3, 4):
|
||||
def __del__(self):
|
||||
if not self.is_closed():
|
||||
warnings.warn("unclosed event loop %r" % self, ResourceWarning)
|
||||
if not self.is_running():
|
||||
self.close()
|
||||
|
||||
def is_running(self):
|
||||
"""Returns True if the event loop is running."""
|
||||
return (self._owner is not None)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue