底层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() |
默认异常处理器实现。 |
示例
- 使用 asyncio.get_event_loop() 和 loop.run_forever().
- 使用 loop.call_later().
- 使用
loop.create_connection()
实现 echo客户端. - 使用``loop.create_connection()`` 去 链接socket.
- 使用add_reader()监听FD(文件描述符)的读取事件.
- 使用loop.add_signal_handler().
- 使用loop.add_signal_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. |