低层级 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.close() 关闭事件循环。
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_recvfrom() socket 接收数据报。
await loop.sock_recvfrom_into() socket 接收数据报并放入缓冲区。
await loop.sock_sendall() 发送数据到 socket
await loop.sock_sendto() 通过 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.get_write_buffer_limits() 返回写入流控制的高位标记位和低位标记位。
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() 杀死子进程。
transport.send_signal() 发送一个信号到子进程。
transport.terminate() 停止子进程。
transport.close() 杀死子进程并关闭所有管道。

协议

协议类可以由下面 回调方法 实现:

callback connection_made() 连接建立时被调用。
callback connection_lost() 连接丢失或关闭时将被调用。
callback pause_writing() 传输的缓冲区超过高位标记位时被调用。
callback resume_writing() 传输的缓冲区传送到低位标记位时被调用。

流协议 (TCP, Unix 套接字, 管道)

callback data_received() 接收到数据时被调用。
callback eof_received() 接收到EOF时被调用。

缓冲流协议

callback get_buffer() 调用后会分配新的接收缓冲区。
callback buffer_updated() 用接收的数据更新缓冲区时被调用。
callback eof_received() 接收到EOF时被调用。

数据报协议

callback datagram_received() 接收到数据报时被调用。
callback error_received() 前一个发送或接收操作引发 OSError 时被调用。

子进程协议

callback pipe_data_received() 子进程向 stdoutstderr 管道写入数据时被调用。
callback pipe_connection_lost() 与子进程通信的其中一个管道关闭时被调用。
callback process_exited() 当子进程退出时被调用。 可在 pipe_data_received()pipe_connection_lost() 方法之前被调用。

事件循环策略

策略是改变 asyncio.get_event_loop() 这类函数行为的一个底层机制。更多细节可以查阅 策略部分

访问策略

asyncio.get_event_loop_policy() 返回当前进程域的策略。
asyncio.set_event_loop_policy() 设置一个新的进程域策略。
AbstractEventLoopPolicy 策略对象的基类。