18.5.asyncio — Asynchronous I/O, event loop, coroutines and tasks¶
New in version 3.4.
Source code:Lib/asyncio/
Note
The asyncio package has been included in the standard library on aprovisional basis. Backwards incompatiblechanges (up to and including removal of the module) may occur if deemednecessary by the core developers.
This module provides infrastructure for writing single-threaded concurrentcode using coroutines, multiplexing I/O access over sockets and otherresources, running network clients and servers, and other related primitives.Here is a more detailed list of the package contents:
- a pluggableevent loop with various system-specificimplementations;
- transport andprotocol abstractions(similar to those inTwisted);
- concrete support for TCP, UDP, SSL, subprocess pipes, delayed calls, andothers (some may be system-dependent);
- a
Futureclass that mimics the one in theconcurrent.futuresmodule, but adapted for use with the event loop; - coroutines and tasks based on
yieldfrom(PEP 380), to help writeconcurrent code in a sequential fashion; - cancellation support for
Futures and coroutines; - synchronization primitives for use between coroutines ina single thread, mimicking those in the
threadingmodule; - an interface for passing work off to a threadpool, for times whenyou absolutely, positively have to use a library that makes blockingI/O calls.
Asynchronous programming is more complex than classical “sequential”programming: see theDevelop with asyncio page which listscommon traps and explains how to avoid them.Enable the debug mode during development to detect common issues.
Table of contents:
- 18.5.1. Base Event Loop
- 18.5.1.1. Run an event loop
- 18.5.1.2. Calls
- 18.5.1.3. Delayed calls
- 18.5.1.4. Futures
- 18.5.1.5. Tasks
- 18.5.1.6. Creating connections
- 18.5.1.7. Creating listening connections
- 18.5.1.8. Watch file descriptors
- 18.5.1.9. Low-level socket operations
- 18.5.1.10. Resolve host name
- 18.5.1.11. Connect pipes
- 18.5.1.12. UNIX signals
- 18.5.1.13. Executor
- 18.5.1.14. Error Handling API
- 18.5.1.15. Debug mode
- 18.5.1.16. Server
- 18.5.1.17. Handle
- 18.5.1.18. Event loop examples
- 18.5.2. Event loops
- 18.5.3. Tasks and coroutines
- 18.5.4. Transports and protocols (callback based API)
- 18.5.5. Streams (coroutine based API)
- 18.5.6. Subprocess
- 18.5.7. Synchronization primitives
- 18.5.8. Queues
- 18.5.9. Develop with asyncio
- 18.5.9.1. Debug mode of asyncio
- 18.5.9.2. Cancellation
- 18.5.9.3. Concurrency and multithreading
- 18.5.9.4. Handle blocking functions correctly
- 18.5.9.5. Logging
- 18.5.9.6. Detect coroutine objects never scheduled
- 18.5.9.7. Detect exceptions never consumed
- 18.5.9.8. Chain coroutines correctly
- 18.5.9.9. Pending task destroyed
- 18.5.9.10. Close transports and event loops
