Documentation of the asyncio module¶
The documentation of the asyncio is part of the Python project. It can be read online: asyncio - Asynchronous I/O, event loop, coroutines and tasks.
To adapt asyncio examples for Trollius, “just”:
import trollius as asyncio)
yield from ...with
yield from with
- in coroutines, replace
Trollius Hello World¶
Hello World every two seconds, using a coroutine:
import trollius from trollius import From @trollius.coroutine def greet_every_two_seconds(): while True: print('Hello World') yield From(trollius.sleep(2)) loop = trollius.get_event_loop() loop.run_until_complete(greet_every_two_seconds())
To enable the debug mode:
TROLLIUSDEBUGenvrironment variable to
- Configure logging to log at level
BaseEventLoop.set_debug() method can be used to set the debug mode on a
specific event loop. The environment variable enables also the debug mode for
Effect of the debug mode:
- On Python 2,
Future.set_exception()stores the traceback, so
loop.run_until_complete()raises the exception with the original traceback.
- Log coroutines defined but never “yielded”
- BaseEventLoop.call_soon() and 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 BaseEventLoop.slow_callback_duration attribute is the minimum duration in seconds of “slow” callbacks.
- Log most important subprocess events:
- Log stdin, stdout and stderr transports and protocols
- Log process identifier (pid)
- Log connection of pipes
- Log process exit
- Log Process.communicate() tasks: feed stdin, read stdout and stderr
- Log most important socket events:
- Socket connected
- New client (socket.accept())
- Connection reset or closed by peer (EOF)
- Log time elapsed in DNS resolution (getaddrinfo)
- Log pause/resume reading
- Log time of SSL handshake
- Log SSL handshake errors
See Debug mode of asyncio for more information.