底层API目录

本页列出所有底层asyncio API。

获取事件循环

asyncio.get_running_loop() 获取当前运行的事件循环 首选 函数。
asyncio.get_event_loop() 获得一个事件循环实例(当前或通过策略)。
asyncio.set_event_loop() 通过当前策略将事件循环设置当前事件循环。
asyncio.new_event_loop() 创建一个新的事件循环。

示例

事件循环方法集

查阅 事件循环方法 相关的主要文档段落 。

生命周期

loop.run_until_complete() 运行一个期程/任务/可等待对象直到完成。
loop.run_forever() 一直运行事件循环。
loop.stop() 停止事件循环。
loop.stop() 关闭事件循环。
loop.is_running() 返回 True , 如果事件循环正在运行。
loop.is_closed() 返回 True ,如果事件循环已经被关闭 。
await loop.shutdown_asyncgens() 关闭异步生成器。

调试

loop.set_debug() 开启或禁用调试模式。
loop.get_debug() 获取当前测试模式。

调度回调函数

loop.call_soon() 尽快调用回调。
loop.call_soon_threadsafe() loop.call_soon() 方法线程安全的变体。
loop.call_later() 在给定时间 之后 调用回调函数。
loop.call_at() 指定 时间调用回调函数。

线程/进程池

await loop.run_in_executor() concurrent.futures 执行器中运行一个独占CPU或其它阻塞函数。
loop.set_default_executor() 设置 loop.run_in_executor() 默认执行器。

任务与期程

loop.create_future() 创建一个 Future 对象。
loop.create_task() 将协程当作 Task 一样调度。
loop.set_task_factory() 设置 loop.create_task() 使用的工厂,它将用来创建 Tasks
loop.get_task_factory() 获取 loop.create_task() 使用的工厂,它用来创建 Tasks

DNS

await loop.getaddrinfo() 异步版的 socket.getaddrinfo()
await loop.getnameinfo() 异步版的 socket.getnameinfo()

网络和IPC

await loop.create_connection() 打开一个TCP链接。
await loop.create_server() 创建一个TCP服务。
await loop.create_unix_connection() 打开一个Unix socket连接。
await loop.create_unix_server() 创建一个Unix socket服务。
await loop.connect_accepted_socket() socket 包装成 (transport, protocol) 对。
await loop.create_datagram_endpoint() 打开一个数据报(UDP)连接。
await loop.sendfile() 通过传输通道发送一个文件。
await loop.start_tls() 将一个已建立的链接升级到TLS。
await loop.connect_read_pipe() 将管道读取端包装成 (transport, protocol) 对。
await loop.connect_write_pipe() 将管道写入端包装成 (transport, protocol) 对。

套接字

await loop.sock_recv() socket 接收数据。
await loop.sock_recv_into() socket 接收数据到一个缓冲区中。
await loop.sock_sendall() 发送数据到 socket
await loop.sock_connect() 链接 await loop.sock_connect()
await loop.sock_accept() 接受一个 socket 链接。
await loop.sock_sendfile() 利用 socket 发送一个文件。
loop.add_reader() 开始对一个文件描述符的可读性的监视。
loop.remove_reader() 停止对一个文件描述符的可读性的监视。
loop.add_writer() 开始对一个文件描述符的可写性的监视。
loop.remove_writer() 停止对一个文件描述符的可写性的监控。

Unix信号

loop.add_signal_handler() signal 添加一个处理回调函数。
loop.remove_signal_handler() 删除 signal 的处理回调函数。

子进程

loop.subprocess_exec() 衍生一个子进程
loop.subprocess_shell() 从终端命令衍生一个子进程。

错误处理

loop.call_exception_handler() 调用异常处理器。
loop.set_exception_handler() 设置一个新的异常处理器。
loop.get_exception_handler() 获取当前异常处理器。
loop.default_exception_handler() 默认异常处理器实现。

示例

传输

所有传输都实现以下方法:

transport.close() 关闭传输。
transport.is_closing() 返回 True ,如果传输正在关闭或已经关闭。
transport.get_extra_info() 请求传输的相关信息。
transport.set_protocol() 设置一个新协议。
transport.get_protocol() 返回当前协议。

传输可以接收数据(TCP和Unix链接,管道等)。它通过 loop.create_connection(), loop.create_unix_connection(), loop.connect_read_pipe() 等方法返回。

读取传输

transport.is_reading() 返回 True ,如果传输正在接收。
transport.pause_reading() 暂停接收。
transport.resume_reading() 继续接收。

传输可以发送数据(TCP和Unix链接,管道等)。它通过 loop.create_connection(), loop.create_unix_connection(), loop.connect_write_pipe() 等方法返回。

写入传输

transport.write() 向传输写入数据。
transport.write() 向传输写入缓冲。
transport.can_write_eof() 返回 True ,如果传输支持发送 EOF。
transport.write_eof() 在冲洗已缓冲的数据后关闭传输和发送EOF。
transport.abort() 立即关闭传输。
transport.get_write_buffer_size() 返回写入流控制的高位水印和低位水印。
transport.set_write_buffer_limits() 设置新的写入流控制的高位水印和低位水印。

loop.create_datagram_endpoint() 返回的传输:

数据报传输

transport.sendto() 发送数据到远程链接端。
transport.abort() 立即关闭传输。

基于子进程的底层抽象传输,它由 loop.subprocess_exec()loop.subprocess_shell() 返回:

子进程传输

transport.get_pid() 返回子进程的进程ID。
transport.get_pipe_transport() 返回请求通信管道 (stdin, stdout, 或 stderr)的传输。
transport.get_returncode() 返回子进程的返回代号。
transport.kill() Kill the subprocess.
transport.send_signal() Send a signal to the subprocess.
transport.terminate() Stop the subprocess.
transport.close() Kill the subprocess and close all pipes.

Protocols

Protocol classes can implement the following callback methods:

callback connection_made() Called when a connection is made.
callback connection_lost() Called when the connection is lost or closed.
callback pause_writing() Called when the transport's buffer goes over the high water mark.
callback resume_writing() Called when the transport's buffer drains below the low water mark.

Streaming Protocols (TCP, Unix Sockets, Pipes)

callback data_received() Called when some data is received.
callback eof_received() Called when an EOF is received.

Buffered Streaming Protocols

callback get_buffer() Called to allocate a new receive buffer.
callback buffer_updated() Called when the buffer was updated with the received data.
callback eof_received() Called when an EOF is received.

Datagram Protocols

callback datagram_received() Called when a datagram is received.
callback error_received() Called when a previous send or receive operation raises an OSError.

Subprocess Protocols

callback pipe_data_received() Called when the child process writes data into its stdout or stderr pipe.
callback pipe_connection_lost() Called when one of the pipes communicating with the child process is closed.
callback process_exited() Called when the child process has exited.

Event Loop Policies

Policies is a low-level mechanism to alter the behavior of functions like asyncio.get_event_loop(). See also the main policies section for more details.

Accessing Policies

asyncio.get_event_loop_policy() Return the current process-wide policy.
asyncio.set_event_loop_policy() Set a new process-wide policy.
AbstractEventLoopPolicy Base class for policy objects.