tornado.http1connection – HTTP/1.x 客戶端/伺服器實作

HTTP/1.x 的客戶端和伺服器實作。

4.0 版新增功能。

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)[原始碼]

HTTP1ConnectionHTTP1ServerConnection 的參數。

參數
  • no_keep_alive (bool) – 如果為 true,則在一個請求後始終關閉連線。

  • chunk_size (int) – 一次讀取到記憶體中的資料量

  • max_header_size (int) – HTTP 標頭的最大資料量

  • header_timeout (float) – 等待所有標頭的時間(秒)

  • max_body_size (int) – body 的最大資料量

  • body_timeout (float) – 在讀取 body 時等待的時間(秒)

  • decompress (bool) – 如果為 true,則解碼傳入的 Content-Encoding: gzip

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

實作 HTTP/1.x 協定。

此類別可以單獨用於客戶端,或透過 HTTP1ServerConnection 用於伺服器。

參數
  • stream – 一個 IOStream

  • is_client (bool) – 客戶端或伺服器

  • params – 一個 HTTP1ConnectionParameters 執行個體或 None

  • context – 一個不透明的應用程式定義物件,可以作為 connection.context 存取。

read_response(delegate: HTTPMessageDelegate) Awaitable[bool][原始碼]

讀取單個 HTTP 回應。

典型的客戶端模式用法是使用 write_headerswritefinish 寫入請求,然後呼叫 read_response

參數

delegate – 一個 HTTPMessageDelegate

返回一個 Future,在完整讀取回應後解析為布林值。如果串流仍然開啟,結果為 true。

set_close_callback(callback: Optional[Callable[[], None]]) None[原始碼]

設定在連線關閉時會執行的回呼函數。

請注意,此回呼函數與 HTTPMessageDelegate.on_connection_close 略有不同:當接收訊息時連線關閉時,會呼叫 HTTPMessageDelegate 方法。當沒有作用中的委派時,會使用此回呼函數 (例如,在伺服器端,如果客戶端在傳送請求後但在接收所有回應之前關閉連線,則會使用此回呼函數)。

detach() IOStream[原始碼]

取得底層串流的控制權。

傳回底層的 IOStream 物件,並停止所有進一步的 HTTP 處理。只能在 HTTPMessageDelegate.headers_received 期間呼叫。旨在實作諸如透過 HTTP 交握進行通道傳輸的 WebSocket 等協定。

set_body_timeout(timeout: float) None[原始碼]

設定單一請求的 body 超時時間。

覆寫 HTTP1ConnectionParameters 中的值。

set_max_body_size(max_body_size: int) None[原始碼]

設定單一請求的 body 大小限制。

覆寫 HTTP1ConnectionParameters 中的值。

write_headers(start_line: Union[RequestStartLine, ResponseStartLine], headers: HTTPHeaders, chunk: Optional[bytes] = None) Future[None][原始碼]

實作 HTTPConnection.write_headers

write(chunk: bytes) Future[None][原始碼]

實作 HTTPConnection.write

為了保持回溯相容性,允許但已棄用跳過 write_headers,而是使用預先編碼的標頭區塊呼叫 write()

finish() None[原始碼]

實作 HTTPConnection.finish

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

一個 HTTP/1.x 伺服器。

參數
  • stream – 一個 IOStream

  • params – 一個 HTTP1ConnectionParameters 或 None

  • context – 一個不透明的應用程式定義物件,可作為 connection.context 存取

coroutine close() None[原始碼]

關閉連線。

回傳一個 Future,此 Future 將在服務迴圈結束後解析。

start_serving(delegate: HTTPServerConnectionDelegate) None[原始碼]

開始在此連線上服務請求。

參數

delegate – 一個 HTTPServerConnectionDelegate

tornado.http1connection.parse_int(s: str) int[原始碼]

從字串解析一個非負整數。

tornado.http1connection.parse_hex_int(s: str) int[原始碼]

從字串解析一個非負十六進位整數。

tornado.http1connection.is_transfer_encoding_chunked(headers: HTTPHeaders) bool[原始碼]

如果標頭指定了 Transfer-Encoding: chunked,則回傳 true。

如果使用任何其他傳輸編碼,則引發 httputil.HTTPInputError。