Python Tornado入门教程 Tornado HTTP/1.x 客户端/服务器实现

2024-02-25 开发教程 Python Tornado入门教程 匿名 2

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 的参数。
参数:

  • 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: tornado.iostream.IOStream, is_client: bool, params: Optional[tornado.http1connection.HTTP1ConnectionParameters] = None, context: Optional[object] = None)

实现 HTTP/1.x 协议。
此类可以单独用于客户端,也可以通过 HTTP1ServerConnection 用于服务器。
参数:

stream​-IOStream

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

params ​– HTTP1ConnectionParameters 实例或无

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

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

读取单个 HTTP 响应。
典型的客户端模式用法是使用 ​write_headers​、​write ​和 ​finish ​写入请求,然后调用 ​read_response​。
参数:​delegate ​– 一个 ​HTTPMessageDelegate

在读取完整响应后返回解析为布尔值的 ​Future​。 如果​stream​仍处于打开状态,则结果为True。

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

设置将在连接关闭时运行的回调。

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

detach() → tornado.iostream.IOStream

控制底层流。

返回底层 IOStream 对象并停止所有进一步的 HTTP 处理。 只能在 ​HTTPMessageDelegate.headers_received​ 期间调用。 旨在实现通过 HTTP 握手建立隧道的 websocket 等协议。

set_body_timeout(timeout: float) → None

为单个请求设置正文超时。

覆盖来自 ​HTTP1ConnectionParameters的值。

set_max_body_size(max_body_size: int) → None

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

覆盖来自 ​HTTP1ConnectionParameters的值。

write_headers(start_line: Union[tornado.httputil.RequestStartLine, tornado.httputil.ResponseStartLine], headers: tornado.httputil.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: tornado.iostream.IOStream, params: Optional[tornado.http1connection.HTTP1ConnectionParameters] = None, context: Optional[object] = None)

HTTP/1.x 服务器。
参数:

  • stream ​- 一个 IOStream
  • params ​– HTTP1ConnectionParameters 或无
  • context ​– 一个不透明的应用程序定义对象,可作为 connection.context 访问

coroutineclose() → None

关闭连接。

返回服务循环退出后解析的 ​future​。

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

开始在此连接上处理请求。

参数:​delegate ​– 一个 ​HTTPServerConnectionDelegate