diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2014-06-22 22:36:11 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2014-06-22 22:36:11 (GMT) |
commit | 62511fd6d62ef53c1d3d050b478750efc5a7014c (patch) | |
tree | 865d42e3d90237832342182cc79999852f2915e0 | |
parent | 1580fe3fcebcfe0b657281a6a556975c072a5530 (diff) | |
download | cpython-62511fd6d62ef53c1d3d050b478750efc5a7014c.zip cpython-62511fd6d62ef53c1d3d050b478750efc5a7014c.tar.gz cpython-62511fd6d62ef53c1d3d050b478750efc5a7014c.tar.bz2 |
asyncio: document the debug mode
-rw-r--r-- | Doc/library/asyncio-dev.rst | 31 | ||||
-rw-r--r-- | Doc/library/asyncio-eventloop.rst | 2 | ||||
-rw-r--r-- | Doc/using/cmdline.rst | 4 |
3 files changed, 30 insertions, 7 deletions
diff --git a/Doc/library/asyncio-dev.rst b/Doc/library/asyncio-dev.rst index 9d6f054..2b3ad94 100644 --- a/Doc/library/asyncio-dev.rst +++ b/Doc/library/asyncio-dev.rst @@ -9,6 +9,29 @@ Asynchronous programming is different than classical "sequential" programming. This page lists common traps and explains how to avoid them. +.. _asyncio-debug-mode: + +Debug mode of asyncio +--------------------- + +To enable the debug mode globally, set the environment variable +:envvar:`PYTHONASYNCIODEBUG` to ``1``. Examples of effects of the debug mode: + +* Log :ref:`coroutines defined but never "yielded from" + <asyncio-coroutine-not-scheduled>` +* :meth:`~BaseEventLoop.call_soon` and :meth:`~BaseEventLoop.call_at` methods + raise an exception if they are called from the wrong thread. +* Log the execution time of the selector +* Log callbacks taking more than 100 ms to be executed. The + :attr:`BaseEventLoop.slow_callback_duration` attribute is the minimum + duration in seconds of "slow" callbacks. + +.. seealso:: + + The :meth:`BaseEventLoop.set_debug` method and the :ref:`asyncio logger + <asyncio-logger>`. + + .. _asyncio-multithreading: Concurrency and multithreading @@ -83,10 +106,10 @@ Detect coroutine objects never scheduled When a coroutine function is called but not passed to :func:`async` or to the :class:`Task` constructor, it is not scheduled and it is probably a bug. -To detect such bug, set the environment variable :envvar:`PYTHONASYNCIODEBUG` -to ``1``. When the coroutine object is destroyed by the garbage collector, a -log will be emitted with the traceback where the coroutine function was called. -See the :ref:`asyncio logger <asyncio-logger>`. +To detect such bug, :ref:`enable the debug mode of asyncio +<asyncio-debug-mode>`. When the coroutine object is destroyed by the garbage +collector, a log will be emitted with the traceback where the coroutine +function was called. See the :ref:`asyncio logger <asyncio-logger>`. The debug flag changes the behaviour of the :func:`coroutine` decorator. The debug flag value is only used when then coroutine function is defined, not when diff --git a/Doc/library/asyncio-eventloop.rst b/Doc/library/asyncio-eventloop.rst index db89a2a..e62f5ef 100644 --- a/Doc/library/asyncio-eventloop.rst +++ b/Doc/library/asyncio-eventloop.rst @@ -601,7 +601,7 @@ Debug mode .. seealso:: - The :ref:`Develop with asyncio <asyncio-dev>` section. + The :ref:`debug mode of asyncio <asyncio-debug-mode>`. Server diff --git a/Doc/using/cmdline.rst b/Doc/using/cmdline.rst index 0c3c203..55e0e67 100644 --- a/Doc/using/cmdline.rst +++ b/Doc/using/cmdline.rst @@ -616,8 +616,8 @@ conflict. .. envvar:: PYTHONASYNCIODEBUG - If this environment variable is set to a non-empty string, enable the debug - mode of the :mod:`asyncio` module. + If this environment variable is set to a non-empty string, enable the + :ref:`debug mode <asyncio-debug-mode>` of the :mod:`asyncio` module. .. versionadded:: 3.4 |