延伸 ¶
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.
A loop can get many common methods implementation for free by inheriting from
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。
未来和任务私有构造函数 ¶
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.
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:
- Future. __init__ ( * , loop = None ) ¶
-
创建内置未来实例。
loop is an optional event loop instance.
- Task. __init__ ( coro , * , loop = None , 名称 = None , context = None ) ¶
-
创建内置任务实例。
loop is an optional event loop instance. The rest of arguments are described in
loop.create_task()description.3.11 版改变: context 自变量被添加。