低層級 API 索引?

本頁列出所有低層級的 asyncio API。

獲取事件循環(huán)?

asyncio.get_running_loop()

獲取當前運行的事件循環(huán) 首選 函數。

asyncio.get_event_loop()

獲得一個事件循環(huán)實例(當前或通過策略)。

asyncio.set_event_loop()

通過當前策略將事件循環(huán)設置當前事件循環(huán)。

asyncio.new_event_loop()

創(chuàng)建一個新的事件循環(huán)。

例子

事件循環(huán)方法集?

查閱 事件循環(huán)方法 相關的主要文檔段落 。

生命周期

loop.run_until_complete()

運行一個期程/任務/可等待對象直到完成。

loop.run_forever()

一直運行事件循環(huán)。

loop.stop()

停止事件循環(huán)。

loop.close()

關閉事件循環(huán)。

loop.is_running()

返回 True , 如果事件循環(huán)正在運行。

loop.is_closed()

返回 True ,如果事件循環(huán)已經被關閉 。

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 執(zhí)行器中運行一個獨占CPU或其它阻塞函數。

loop.set_default_executor()

設置 loop.run_in_executor() 默認執(zhí)行器。

任務與期程

loop.create_future()

創(chuàng)建一個 Future 對象。

loop.create_task()

將協(xié)程當作 Task 一樣調度。

loop.set_task_factory()

設置 loop.create_task() 使用的工廠,它將用來創(chuàng)建 Tasks 。

loop.get_task_factory()

獲取 loop.create_task() 使用的工廠,它用來創(chuàng)建 Tasks 。

DNS

await loop.getaddrinfo()

異步版的 socket.getaddrinfo() 。

await loop.getnameinfo()

異步版的 socket.getnameinfo() 。

網絡和IPC

await loop.create_connection()

打開一個TCP鏈接。

await loop.create_server()

創(chuàng)建一個TCP服務。

await loop.create_unix_connection()

打開一個Unix socket連接。

await loop.create_unix_server()

創(chuàng)建一個Unix socket服務。

await loop.connect_accepted_socket()

socket 包裝成 (transport, protocol) 對。

await loop.create_datagram_endpoint()

打開一個數據報(UDP)連接。

await loop.sendfile()

通過傳輸通道發(fā)送一個文件。

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 接收數據到一個緩沖區(qū)中。

await loop.sock_recvfrom()

Receive a datagram from the socket.

await loop.sock_recvfrom_into()

Receive a datagram from the socket into a buffer.

await loop.sock_sendall()

發(fā)送數據到 socket

await loop.sock_sendto()

Send a datagram via the socket to the given address.

await loop.sock_connect()

鏈接 await loop.sock_connect() 。

await loop.sock_accept()

接受一個 socket 鏈接。

await loop.sock_sendfile()

利用 socket 發(fā)送一個文件。

loop.add_reader()

開始對一個文件描述符的可讀性的監(jiān)視。

loop.remove_reader()

停止對一個文件描述符的可讀性的監(jiān)視。

loop.add_writer()

開始對一個文件描述符的可寫性的監(jiān)視。

loop.remove_writer()

停止對一個文件描述符的可寫性的監(jiān)視。

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

設置一個新協(xié)議。

transport.get_protocol()

返回當前協(xié)議。

傳輸可以接收數據(TCP和Unix鏈接,管道等)。它通過 loop.create_connection(), loop.create_unix_connection(), loop.connect_read_pipe() 等方法返回。

讀取傳輸

transport.is_reading()

返回 True ,如果傳輸正在接收。

transport.pause_reading()

暫停接收。

transport.resume_reading()

繼續(xù)接收。

傳輸可以發(fā)送數據(TCP和Unix鏈接,管道等)。它通過 loop.create_connection(), loop.create_unix_connection(), loop.connect_write_pipe() 等方法返回。

寫入傳輸

transport.write()

向傳輸寫入數據。

transport.write()

向傳輸寫入緩沖。

transport.can_write_eof()

返回 True ,如果傳輸支持發(fā)送 EOF。

transport.write_eof()

在沖洗已緩沖的數據后關閉傳輸和發(fā)送EOF。

transport.abort()

立即關閉傳輸。

transport.get_write_buffer_size()

返回寫入流控制的高位標記位和低位標記位。

transport.set_write_buffer_limits()

設置新的寫入流控制的高位標記位和低位標記位。

loop.create_datagram_endpoint() 返回的傳輸:

數據報傳輸

transport.sendto()

發(fā)送數據到遠程鏈接端。

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

發(fā)送一個信號到子進程。

transport.terminate()

停止子進程。

transport.close()

殺死子進程并關閉所有管道。

協(xié)議?

協(xié)議類可以由下面 回調方法 實現:

callback connection_made()

連接建立時被調用。

callback connection_lost()

連接丟失或關閉時將被調用。

callback pause_writing()

傳輸的緩沖區(qū)超過高位標記位時被調用。

callback resume_writing()

傳輸的緩沖區(qū)傳送到低位標記位時被調用。

流協(xié)議 (TCP, Unix 套接字, 管道)

callback data_received()

接收到數據時被調用。

callback eof_received()

接收到EOF時被調用。

緩沖流協(xié)議

callback get_buffer()

調用后會分配新的接收緩沖區(qū)。

callback buffer_updated()

用接收的數據更新緩沖區(qū)時被調用。

callback eof_received()

接收到EOF時被調用。

數據報協(xié)議

callback datagram_received()

接收到數據報時被調用。

callback error_received()

前一個發(fā)送或接收操作引發(fā) OSError 時被調用。

子進程協(xié)議

callback pipe_data_received()

子進程向 stdoutstderr 管道寫入數據時被調用。

callback pipe_connection_lost()

與子進程通信的其中一個管道關閉時被調用。

callback process_exited()

子進程退出時被調用。

事件循環(huán)策略?

策略是改變 asyncio.get_event_loop() 這類函數行為的一個底層機制。更多細節(jié)可以查閱 策略部分。

訪問策略

asyncio.get_event_loop_policy()

返回當前進程域的策略。

asyncio.set_event_loop_policy()

設置一個新的進程域策略。

AbstractEventLoopPolicy

策略對象的基類。