底層 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

策略物件的基本類。