底层 API 索引

此页面列出了所有底层的 asyncio API。

获取事件循环

asyncio.get_running_loop()

获取正在运行的事件循环的首选函数。

asyncio.get_event_loop()

获取事件循环实例(正在运行的或通过当前策略获取的当前实例)。

asyncio.set_event_loop()

通过当前策略将事件循环设置为当前实例。

asyncio.new_event_loop()

创建一个新的事件循环。

示例

事件循环方法

另请参阅有关事件循环方法的主要文档部分。

生命周期

loop.run_until_complete()

运行 Future/Task/awaitable 直到完成。

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() 设置默认执行器。

任务和 Future

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 套接字连接。

await loop.create_unix_server()

创建 Unix 套接字服务器。

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()

连接 socket

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()

从 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.writelines()

将缓冲区写入传输。

transport.can_write_eof()

如果传输支持发送 EOF,则返回 True

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()

返回请求的通信管道的传输(stdinstdoutstderr)。

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

策略对象的基本类。