diff options
-rw-r--r-- | asyncio/base_events.py | 7 | ||||
-rw-r--r-- | asyncio/unix_events.py | 6 |
2 files changed, 10 insertions, 3 deletions
diff --git a/asyncio/base_events.py b/asyncio/base_events.py index a0ff5ed..86a71f5 100644 --- a/asyncio/base_events.py +++ b/asyncio/base_events.py @@ -1139,3 +1139,10 @@ class BaseEventLoop(events.AbstractEventLoop): break index -= 1 return tb + + def _get_source(self): + handle = self._current_handle + if handle is None or not handle._source_traceback: + return '' + tb = ''.join(traceback.format_list(handle._source_traceback)) + return 'Handle created at (most recent call last):\n%s' % tb diff --git a/asyncio/unix_events.py b/asyncio/unix_events.py index 60bd1de..15f235f 100644 --- a/asyncio/unix_events.py +++ b/asyncio/unix_events.py @@ -355,10 +355,10 @@ class _UnixReadPipeTransport(transports.ReadTransport): # should be called by exception handler only if (isinstance(exc, OSError) and exc.errno == errno.EIO): if self._loop.get_debug(): + source = self._loop._get_source() msg = "%r: %s" % (self, message) - if self._loop._current_handle: - msg += events._format_source_traceback('Handle', - self._loop._current_handle._source_traceback) + if source: + msg += '\n' + source else: msg += events._format_source_traceback('Transport', self._source_traceback) |