asyncio, Tulip issue #136: Add get/set_debug() methods to BaseEventLoopTests.

Add also a PYTHONASYNCIODEBUG environment variable to debug coroutines since
Python startup, to be able to debug coroutines defined directly in the asyncio
module.
This commit is contained in:
Victor Stinner 2014-02-19 23:15:02 +01:00
parent f4558e8b54
commit 7ef60cd8c2
8 changed files with 83 additions and 5 deletions

View file

@ -123,6 +123,7 @@ class BaseEventLoop(events.AbstractEventLoop):
self._running = False
self._clock_resolution = time.get_clock_info('monotonic').resolution
self._exception_handler = None
self._debug = False
def _make_socket_transport(self, sock, protocol, waiter=None, *,
extra=None, server=None):
@ -795,3 +796,9 @@ class BaseEventLoop(events.AbstractEventLoop):
if not handle._cancelled:
handle._run()
handle = None # Needed to break cycles when an exception occurs.
def get_debug(self):
return self._debug
def set_debug(self, enabled):
self._debug = enabled

View file

@ -345,6 +345,14 @@ class AbstractEventLoop:
def call_exception_handler(self, context):
raise NotImplementedError
# Debug flag management.
def get_debug(self):
raise NotImplementedError
def set_debug(self, enabled):
raise NotImplementedError
class AbstractEventLoopPolicy:
"""Abstract policy for accessing the event loop."""

View file

@ -12,6 +12,8 @@ import concurrent.futures
import functools
import inspect
import linecache
import os
import sys
import traceback
import weakref
@ -28,7 +30,8 @@ from .log import logger
# before you define your coroutines. A downside of using this feature
# is that tracebacks show entries for the CoroWrapper.__next__ method
# when _DEBUG is true.
_DEBUG = False
_DEBUG = (not sys.flags.ignore_environment
and bool(os.environ.get('PYTHONASYNCIODEBUG')))
class CoroWrapper: