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)[source]

用于 HTTP1ConnectionHTTP1ServerConnection 的参数。

参数
  • no_keep_alive (bool) – 如果为真,则在一次请求后始终关闭连接。

  • chunk_size (int) – 每次读取到内存中的数据量

  • max_header_size (int) – HTTP 头部数据的最大量

  • header_timeout (float) – 等待所有头部的时间(秒)

  • max_body_size (int) – 正文数据的最大量

  • body_timeout (float) – 读取正文时等待的时间(秒)

  • decompress (bool) – 如果为真,则解码传入的 Content-Encoding: gzip

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

实现 HTTP/1.x 协议。

此类可以单独用于客户端,也可以通过 HTTP1ServerConnection 用于服务器。

参数
  • stream – 一个 IOStream

  • is_client (bool) – 客户端或服务器

  • params – 一个 HTTP1ConnectionParameters 实例或 None

  • context – 一个不透明的应用程序定义的对象,可以作为 connection.context 访问。

read_response(delegate: HTTPMessageDelegate) Awaitable[bool][source]

读取单个 HTTP 响应。

典型的客户端模式用法是使用 write_headerswritefinish 写入请求,然后调用 read_response

参数

delegate – 一个 HTTPMessageDelegate

返回一个 Future,它在完整响应读取后解析为布尔值。结果为真表示流仍然打开。

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

设置一个回调,将在连接关闭时运行。

请注意,此回调与 HTTPMessageDelegate.on_connection_close 略有不同:当接收消息时连接关闭时,将调用 HTTPMessageDelegate 方法。此回调用于没有活动委托的情况(例如,在服务器端,如果客户端在发送请求后但在接收所有响应之前关闭连接,则会使用此回调)。

detach() IOStream[source]

获取底层流的控制权。

返回底层 IOStream 对象并停止所有后续 HTTP 处理。只能在 HTTPMessageDelegate.headers_received 期间调用。用于实现像 WebSockets 这样的通过 HTTP 握手隧道的协议。

set_body_timeout(timeout: float) None[source]

设置单个请求的正文超时时间。

覆盖来自 HTTP1ConnectionParameters 的值。

set_max_body_size(max_body_size: int) None[source]

设置单个请求的正文大小限制。

覆盖来自 HTTP1ConnectionParameters 的值。

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

实现 HTTPConnection.write_headers.

write(chunk: bytes) Future[None][source]

实现 HTTPConnection.write.

为了向后兼容,允许但已弃用跳过 write_headers 并改为使用预编码的报头块调用 write()

finish() None[source]

实现 HTTPConnection.finish.

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

HTTP/1.x 服务器。

参数
  • stream – 一个 IOStream

  • params – a HTTP1ConnectionParameters or None

  • context – 一个不透明的应用程序定义的对象,可作为 connection.context 访问

coroutine close() None[source]

关闭连接。

返回一个 Future,它在服务循环退出后解析。

start_serving(delegate: HTTPServerConnectionDelegate) None[source]

开始在此连接上提供服务请求。

参数

delegate – a HTTPServerConnectionDelegate

tornado.http1connection.parse_int(s: str) int[source]

从字符串中解析非负整数。

tornado.http1connection.parse_hex_int(s: str) int[source]

从字符串中解析一个非负的十六进制整数。

tornado.http1connection.is_transfer_encoding_chunked(headers: HTTPHeaders) bool[source]

如果 headers 指定了 Transfer-Encoding: chunked,则返回 True。

如果使用任何其他传输编码,则引发 httputil.HTTPInputError。