底层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_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()

杀死子进程。

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

子进程退出时被调用。

事件循环策略

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

访问策略

asyncio.get_event_loop_policy()

返回当前进程域的策略。

asyncio.set_event_loop_policy()

设置一个新的进程域策略。

AbstractEventLoopPolicy

策略对象的基类。