Tornado HTTP/1.x 客戶端/服務(wù)器實現(xiàn)

2022-03-09 18:09 更新

class tornado.http1connection.HTTP1ConnectionParameters(no_keep_alive: bool = False, chunk_size: Optional[int] = None, max_header_size: Optional[int] = None, header_timeout: Optional[float] = None, max_body_size: Optional[int] = None, body_timeout: Optional[float] = None, decompress: bool = False)

HTTP1Connection 和 HTTP1ServerConnection 的參數(shù)。
參數(shù):

  • ?no_keep_alive ?(bool) -- 如果為True,則始終在一個請求后關(guān)閉連接。
  • ?chunk_size ?(int) – 一次讀入內(nèi)存的數(shù)據(jù)量
  • ?max_header_size ?(int) – HTTP 表頭的最大數(shù)據(jù)量
  • ?header_timeout ?(float) – 等待所有表頭的時間(秒)
  • ?max_body_size ?(int) – body 的最大數(shù)據(jù)量
  • ?body_timeout ?(float) – 讀取body時等待多長時間(秒)
  • ?decompress ?(bool) -- 如果為True,解碼傳入的 Content-Encoding: gzip

class tornado.http1connection.HTTP1Connection(stream: tornado.iostream.IOStream, is_client: bool, params: Optional[tornado.http1connection.HTTP1ConnectionParameters] = None, context: Optional[object] = None)

實現(xiàn) HTTP/1.x 協(xié)議。
此類可以單獨用于客戶端,也可以通過 HTTP1ServerConnection 用于服務(wù)器。
參數(shù):

?stream?-IOStream

?is_client ?(bool) – 客戶端或服務(wù)器

?params ?– HTTP1ConnectionParameters 實例或無

?context ?– 一個不透明的應(yīng)用程序定義的對象,可以作為 connection.context 訪問。

read_response(delegate: tornado.httputil.HTTPMessageDelegate) → Awaitable[bool]

讀取單個 HTTP 響應(yīng)。
典型的客戶端模式用法是使用 ?write_headers?、?write ?和 ?finish ?寫入請求,然后調(diào)用 ?read_response?。
參數(shù):?delegate ?– 一個 ?HTTPMessageDelegate?

在讀取完整響應(yīng)后返回解析為布爾值的 ?Future?。 如果?stream?仍處于打開狀態(tài),則結(jié)果為True。

set_close_callback(callback: Optional[Callable[[], None]]) → None

設(shè)置將在連接關(guān)閉時運行的回調(diào)。

請注意,此回調(diào)與 ?HTTPMessageDelegate.on_connection_close? 略有不同:HTTPMessageDelegate 方法在接收消息關(guān)閉連接時調(diào)用。 當(dāng)沒有活動委托時使用此回調(diào)(例如,在服務(wù)器端,如果客戶端在發(fā)送請求后但在收到所有響應(yīng)之前關(guān)閉連接,則使用此回調(diào)。

detach() → tornado.iostream.IOStream

控制底層流。

返回底層 IOStream 對象并停止所有進一步的 HTTP 處理。 只能在 ?HTTPMessageDelegate.headers_received? 期間調(diào)用。 旨在實現(xiàn)通過 HTTP 握手建立隧道的 websocket 等協(xié)議。

set_body_timeout(timeout: float) → None

為單個請求設(shè)置正文超時。

覆蓋來自 ?HTTP1ConnectionParameters的值。

set_max_body_size(max_body_size: int) → None

設(shè)置單個請求的正文大小限制。

覆蓋來自 ?HTTP1ConnectionParameters的值。

write_headers(start_line: Union[tornado.httputil.RequestStartLine, tornado.httputil.ResponseStartLine], headers: tornado.httputil.HTTPHeaders, chunk: Optional[bytes] = None) → Future[None]

實現(xiàn) ?HTTPConnection.write_headers?

write(chunk: bytes) → Future[None]

實現(xiàn) ?HTTPConnection.write?。

為了向后兼容,允許但不推薦跳過 ?write_headers? 并使用預(yù)編碼的表頭塊調(diào)用 ?write()?。

finish() → None

實現(xiàn) ?HTTPConnection.finish?

class tornado.http1connection.HTTP1ServerConnection(stream: tornado.iostream.IOStream, params: Optional[tornado.http1connection.HTTP1ConnectionParameters] = None, context: Optional[object] = None)

HTTP/1.x 服務(wù)器。
參數(shù):

  • ?stream ?- 一個 IOStream
  • ?params ?– HTTP1ConnectionParameters 或無
  • ?context ?– 一個不透明的應(yīng)用程序定義對象,可作為 connection.context 訪問

coroutineclose() → None

關(guān)閉連接。

返回服務(wù)循環(huán)退出后解析的 ?future?。

start_serving(delegate: tornado.httputil.HTTPServerConnectionDelegate) → None

開始在此連接上處理請求。

參數(shù):?delegate ?– 一個 ?HTTPServerConnectionDelegate?


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號