mirror of
https://github.com/python/cpython.git
synced 2025-08-30 05:35:08 +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
|
@ -7,6 +7,8 @@ proactor is only implemented on Windows with IOCP.
|
|||
__all__ = ['BaseProactorEventLoop']
|
||||
|
||||
import socket
|
||||
import sys
|
||||
import warnings
|
||||
|
||||
from . import base_events
|
||||
from . import constants
|
||||
|
@ -74,6 +76,15 @@ class _ProactorBasePipeTransport(transports._FlowControlMixin,
|
|||
self._read_fut.cancel()
|
||||
self._read_fut = None
|
||||
|
||||
# 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 self._sock is not None:
|
||||
warnings.warn("unclosed transport %r" % self, ResourceWarning)
|
||||
self.close()
|
||||
|
||||
def _fatal_error(self, exc, message='Fatal error on pipe transport'):
|
||||
if isinstance(exc, (BrokenPipeError, ConnectionResetError)):
|
||||
if self._loop.get_debug():
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue