asyncio
The main direction for asyncio extending is writing custom 事件循环 classes. Asyncio has helpers that could be used to simplify this task.
注意
Third-parties should reuse existing asyncio code with caution, a new Python version is free to break backward compatibility in internal part of API.
asyncio.AbstractEventLoop declares very many methods. Implementing all them from scratch is a tedious job.
asyncio.AbstractEventLoop
A loop can get many common methods implementation for free by inheriting from asyncio.BaseEventLoop .
asyncio.BaseEventLoop
In turn, the successor should implement a bunch of private methods declared but not implemented in asyncio.BaseEventLoop .
例如, loop.create_connection() checks arguments, resolves DNS addresses, and calls loop._make_socket_transport() that should be implemented by inherited class. The _make_socket_transport() method is not documented and is considered as an internal API。
loop.create_connection()
loop._make_socket_transport()
_make_socket_transport()
asyncio.Future and asyncio.Task should be never created directly, please use corresponding loop.create_future() and loop.create_task() ,或 asyncio.create_task() factories instead.
asyncio.Future
asyncio.Task
loop.create_future()
loop.create_task()
asyncio.create_task()
However, third-party 事件循环 may reuse built-in future and task implementations for the sake of getting a complex and highly optimized code for free.
For this purpose the following, private constructors are listed:
创建内置未来实例。
loop is an optional event loop instance.
创建内置任务实例。
loop is an optional event loop instance. The rest of arguments are described in loop.create_task() description.
3.11 版改变: context 自变量被添加。
A third party task implementation should call the following functions to keep a task visible by asyncio.all_tasks() and asyncio.current_task() :
asyncio.all_tasks()
asyncio.current_task()
Register a new task as managed by asyncio .
从任务构造函数调用函数。
Unregister a task from asyncio internal structures.
The function should be called when a task is about to finish.
Switch the current task to the task 自变量。
Call the function just before executing a portion of embedded 协程 ( coroutine.send() or coroutine.throw() ).
coroutine.send()
coroutine.throw()
Switch the current task back from task to None .
None
Call the function just after coroutine.send() or coroutine.throw() execution.
平台支持
高级 API 索引
键入搜索术语或模块、类、函数名称。