低層級(jí) API 索引?

本頁(yè)列出所有低層級(jí)的 asyncio API。

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

asyncio.get_running_loop()

獲取當(dāng)前運(yùn)行的事件循環(huán) 首選 函數(shù)。

asyncio.get_event_loop()

獲得一個(gè)事件循環(huán)實(shí)例(當(dāng)前或通過(guò)策略)。

asyncio.set_event_loop()

通過(guò)當(dāng)前策略將事件循環(huán)設(shè)置當(dāng)前事件循環(huán)。

asyncio.new_event_loop()

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

例子

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

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

生命周期

loop.run_until_complete()

運(yùn)行一個(gè)期程/任務(wù)/可等待對(duì)象直到完成。

loop.run_forever()

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

loop.stop()

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

loop.close()

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

loop.is_running()

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

loop.is_closed()

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

await loop.shutdown_asyncgens()

關(guān)閉異步生成器。

調(diào)試

loop.set_debug()

開(kāi)啟或禁用調(diào)試模式。

loop.get_debug()

獲取當(dāng)前測(cè)試模式。

調(diào)度回調(diào)函數(shù)

loop.call_soon()

盡快調(diào)用回調(diào)。

loop.call_soon_threadsafe()

loop.call_soon() 方法線程安全的變體。

loop.call_later()

在給定時(shí)間 之后 調(diào)用回調(diào)函數(shù)。

loop.call_at()

指定 時(shí)間調(diào)用回調(diào)函數(shù)。

線程/進(jìn)程池

await loop.run_in_executor()

concurrent.futures 執(zhí)行器中運(yùn)行一個(gè)獨(dú)占CPU或其它阻塞函數(shù)。

loop.set_default_executor()

設(shè)置 loop.run_in_executor() 默認(rèn)執(zhí)行器。

任務(wù)與期程

loop.create_future()

創(chuàng)建一個(gè) Future 對(duì)象。

loop.create_task()

將協(xié)程當(dāng)作 Task 一樣調(diào)度。

loop.set_task_factory()

設(shè)置 loop.create_task() 使用的工廠,它將用來(lái)創(chuàng)建 Tasks

loop.get_task_factory()

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

DNS

await loop.getaddrinfo()

異步版的 socket.getaddrinfo()

await loop.getnameinfo()

異步版的 socket.getnameinfo() 。

網(wǎng)絡(luò)和IPC

await loop.create_connection()

打開(kāi)一個(gè)TCP鏈接。

await loop.create_server()

創(chuàng)建一個(gè)TCP服務(wù)。

await loop.create_unix_connection()

打開(kāi)一個(gè)Unix socket連接。

await loop.create_unix_server()

創(chuàng)建一個(gè)Unix socket服務(wù)。

await loop.connect_accepted_socket()

socket 包裝成 (transport, protocol) 對(duì)。

await loop.create_datagram_endpoint()

打開(kāi)一個(gè)數(shù)據(jù)報(bào)(UDP)連接。

await loop.sendfile()

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

await loop.start_tls()

將一個(gè)已建立的鏈接升級(jí)到TLS。

await loop.connect_read_pipe()

將管道讀取端包裝成 (transport, protocol) 對(duì)。

await loop.connect_write_pipe()

將管道寫入端包裝成 (transport, protocol) 對(duì)。

套接字

await loop.sock_recv()

socket 接收數(shù)據(jù)。

await loop.sock_recv_into()

socket 接收數(shù)據(jù)到一個(gè)緩沖區(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ā)送數(shù)據(jù)到 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()

接受一個(gè) socket 鏈接。

await loop.sock_sendfile()

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

loop.add_reader()

開(kāi)始對(duì)一個(gè)文件描述符的可讀性的監(jiān)視。

loop.remove_reader()

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

loop.add_writer()

開(kāi)始對(duì)一個(gè)文件描述符的可寫性的監(jiān)視。

loop.remove_writer()

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

Unix信號(hào)

loop.add_signal_handler()

signal 添加一個(gè)處理回調(diào)函數(shù)。

loop.remove_signal_handler()

刪除 signal 的處理回調(diào)函數(shù)。

子進(jìn)程集

loop.subprocess_exec()

衍生一個(gè)子進(jìn)程

loop.subprocess_shell()

從終端命令衍生一個(gè)子進(jìn)程。

錯(cuò)誤處理

loop.call_exception_handler()

調(diào)用異常處理器。

loop.set_exception_handler()

設(shè)置一個(gè)新的異常處理器。

loop.get_exception_handler()

獲取當(dāng)前異常處理器。

loop.default_exception_handler()

默認(rèn)異常處理器實(shí)現(xiàn)。

例子

傳輸?

所有傳輸都實(shí)現(xiàn)以下方法:

transport.close()

關(guān)閉傳輸。

transport.is_closing()

返回 True ,如果傳輸正在關(guān)閉或已經(jīng)關(guān)閉。

transport.get_extra_info()

請(qǐng)求傳輸?shù)南嚓P(guān)信息。

transport.set_protocol()

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

transport.get_protocol()

返回當(dāng)前協(xié)議。

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

讀取傳輸

transport.is_reading()

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

transport.pause_reading()

暫停接收。

transport.resume_reading()

繼續(xù)接收。

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

寫入傳輸

transport.write()

向傳輸寫入數(shù)據(jù)。

transport.write()

向傳輸寫入緩沖。

transport.can_write_eof()

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

transport.write_eof()

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

transport.abort()

立即關(guān)閉傳輸。

transport.get_write_buffer_size()

返回寫入流控制的高位標(biāo)記位和低位標(biāo)記位。

transport.set_write_buffer_limits()

設(shè)置新的寫入流控制的高位標(biāo)記位和低位標(biāo)記位。

loop.create_datagram_endpoint() 返回的傳輸:

數(shù)據(jù)報(bào)傳輸

transport.sendto()

發(fā)送數(shù)據(jù)到遠(yuǎn)程鏈接端。

transport.abort()

立即關(guān)閉傳輸。

基于子進(jìn)程的底層抽象傳輸,它由 loop.subprocess_exec()loop.subprocess_shell() 返回:

子進(jìn)程傳輸

transport.get_pid()

返回子進(jìn)程的進(jìn)程ID。

transport.get_pipe_transport()

返回請(qǐng)求通信管道 (stdin, stdout, 或 stderr)的傳輸。

transport.get_returncode()

返回子進(jìn)程的返回代號(hào)。

transport.kill()

殺死子進(jìn)程。

transport.send_signal()

發(fā)送一個(gè)信號(hào)到子進(jìn)程。

transport.terminate()

停止子進(jìn)程。

transport.close()

殺死子進(jìn)程并關(guān)閉所有管道。

協(xié)議?

協(xié)議類可以由下面 回調(diào)方法 實(shí)現(xiàn):

callback connection_made()

連接建立時(shí)被調(diào)用。

callback connection_lost()

連接丟失或關(guān)閉時(shí)將被調(diào)用。

callback pause_writing()

傳輸?shù)木彌_區(qū)超過(guò)高位標(biāo)記位時(shí)被調(diào)用。

callback resume_writing()

傳輸?shù)木彌_區(qū)傳送到低位標(biāo)記位時(shí)被調(diào)用。

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

callback data_received()

接收到數(shù)據(jù)時(shí)被調(diào)用。

callback eof_received()

接收到EOF時(shí)被調(diào)用。

緩沖流協(xié)議

callback get_buffer()

調(diào)用后會(huì)分配新的接收緩沖區(qū)。

callback buffer_updated()

用接收的數(shù)據(jù)更新緩沖區(qū)時(shí)被調(diào)用。

callback eof_received()

接收到EOF時(shí)被調(diào)用。

數(shù)據(jù)報(bào)協(xié)議

callback datagram_received()

接收到數(shù)據(jù)報(bào)時(shí)被調(diào)用。

callback error_received()

前一個(gè)發(fā)送或接收操作引發(fā) OSError 時(shí)被調(diào)用。

子進(jìn)程協(xié)議

callback pipe_data_received()

子進(jìn)程向 stdoutstderr 管道寫入數(shù)據(jù)時(shí)被調(diào)用。

callback pipe_connection_lost()

與子進(jìn)程通信的其中一個(gè)管道關(guān)閉時(shí)被調(diào)用。

callback process_exited()

子進(jìn)程退出時(shí)被調(diào)用。

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

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

訪問(wèn)策略

asyncio.get_event_loop_policy()

返回當(dāng)前進(jìn)程域的策略。

asyncio.set_event_loop_policy()

設(shè)置一個(gè)新的進(jìn)程域策略。

AbstractEventLoopPolicy

策略對(duì)象的基類。