Sanic服务器

sanic.http

class sanic.http.Http(protocol)

基类:sanic.http.stream.Stream

“管理HTTP/1.1请求/响应周期的内部帮助器。

产生:

BadRequest:如果请求正文格式不正确。异常:如果请求的格式不正确。ExspectationFailed:如果请求格式不正确。PayloadTooLarge:如果请求Body超出大小限制。如果响应状态为INVALID,则返回错误。ServerError:如果处理程序没有产生响应。ServerError:如果响应大于内容长度。

create_empty_request()

创建一个空的请求对象以供错误处理使用。

当前错误处理代码需要一个请求对象,如果在收到请求之前发生错误,该对象将不存在。创建用于错误处理的虚假响应。

返回类型:

None

async error_response(exception)

遇到异常时处理响应

参数:

exception (Exception) --

返回类型:

None

head_response_ignored(data, end_stream)

头部响应:身体数据被静默忽略。

参数:
  • data (bytes) --

  • end_stream (bool) --

返回类型:

None

async http1()

HTTP 1.1连接处理程序

async http1_request_header()

接收请求标头并将其解析为self.request。

async http1_response_chunked(data, end_stream)

用分块编码格式化响应正文的一部分。

参数:
  • data (bytes) --

  • end_stream (bool) --

返回类型:

None

async http1_response_header(data, end_stream)

设置响应头的格式并将其发送。

参数:
  • data (bytes) --

  • end_stream (bool) --

返回类型:

None

async http1_response_normal(data, end_stream)

格式化/跟踪非分块响应。

参数:
  • data (bytes) --

  • end_stream (bool) --

返回类型:

None

init_for_request()

初始化/重置每个请求的所有变量。

log_response()

帮助器方法,用于在以下情况下启用响应记录 HttpProtocol.access_log 已启用。

返回类型:

None

async read()

读取请求正文的一些字节。

返回类型:

Optional[bytes, None]

respond(response)

启动新的流响应。

在对返回的对象进行第一次Send()调用之前,不会发送任何内容,多次调用此函数只会改变所给出的响应。

参数:

response (BaseHTTPResponse) --

返回类型:

BaseHTTPResponse

class sanic.http.Http3(protocol, transmit)

基类:object

用于管理HTTP/3请求/响应周期的内部助手

enum sanic.http.Stage(value)

基类:enum.Enum

用于表示请求/响应周期的阶段的枚举

IDLE 正在等待请求
REQUEST 正在接收的请求头
HANDLER 标头已完成,处理程序正在运行
RESPONSE 已发送响应头,正文正在进行
FAILED 不可恢复状态(发送响应时出错)

有效值如下所示:

IDLE = <Stage.IDLE: 0>
REQUEST = <Stage.REQUEST: 1>
HANDLER = <Stage.HANDLER: 3>
RESPONSE = <Stage.RESPONSE: 4>
FAILED = <Stage.FAILED: 100>

sanic.server

class sanic.server.AsyncioServer(app, loop, serve_coro, connections)

基类:object

使用可能对需要手动管理服务器生命周期的用户有用的功能包装异步服务器。

after_start()

触发“服务器启动后”事件

after_stop()

触发“服务器停止后”事件

before_start()

触发“BEFORE_SERVER_START”事件

before_stop()

触发“服务器停止前”事件

close()

关闭服务器

is_serving()

如果服务器正在运行,则返回True,否则返回False

返回类型:

bool

serve_forever()

为请求提供服务,直到服务器停止

start_serving()

开始为请求提供服务

startup()

在应用程序上触发“启动”操作

wait_closed()

等待服务器关闭

class sanic.server.ConnInfo(transport, unix=None)

基类:object

本地和远程地址以及SSL状态信息。

class sanic.server.HttpProtocol(*, loop, app, signal=None, connections=None, state=None, unix=None, **kwargs)

基类:sanic.server.protocols.http_protocol.HttpProtocolMixin, sanic.server.protocols.base_protocol.SanicProtocol

这个类在我们的Sanic服务器传输之上实现了HTTP1.1协议

HTTP_CLASS

sanic.http.http1.Http 的别名

check_timeouts()

它会定期自行运行,以强制执行任何过期的超时。

close_if_idle()

如果没有发送或接收请求,请关闭连接

返回:

布尔值-关闭时为真,保持打开时为假

返回类型:

bool

connection_made(transport)

HTTP协议特定的新连接处理程序

async connection_task()

运行HTTP连接。

超时和一些额外的错误处理在这里发生,而其他大多数事情都发生在http类或从那里调用的代码中。

data_received(data)

当接收到某些数据时调用。

参数是一个字节对象。

参数:

data (bytes) --

async send(data)

使用反压控制写入HTTP数据。

sanic.server.serve(host, port, app, ssl=None, sock=None, unix=None, reuse_port=False, loop=None, protocol=<class 'sanic.server.protocols.http_protocol.HttpProtocol'>, backlog=100, register_sys_signals=True, run_multiple=False, run_async=False, connections=None, signal=<sanic.models.server_types.Signal object>, state=None, asyncio_server_kwargs=None, version=<HTTP.VERSION_1: 1>)

在单个进程上启动异步HTTP服务器。

参数:
  • host -- 主机地址

  • port -- 端口到主机上

  • before_start -- 要在服务器开始侦听之前执行的函数。采取论点 app 实例和 loop

  • after_start -- 服务器开始侦听后要执行的函数。接受参数 app 实例和 loop

  • before_stop -- 在执行停止信号之前接收到停止信号时要执行的功能。采取论点 app 实例和 loop

  • after_stop -- 在收到停止信号后执行的功能。采取论点 app 实例和 loop

  • ssl (Optional[SSLContext]) -- SSLContext

  • sock (Optional[socket.socket]) -- 服务器接受连接的套接字

  • unix (Optional[str]) -- 要监听的Unix套接字而不是TCP端口

  • reuse_port (bool) -- True 对于多个工人

  • loop -- 异步兼容事件循环

  • run_async (bool) -- bool:不要为服务器创建新的事件循环,并返回一个AsyncServer对象,而不是运行它

  • asyncio_server_kwargs -- asyncio/uvloop create_server方法的键值参数

  • app (Sanic) --

  • protocol (Type[asyncio.Protocol]) --

  • backlog (int) --

  • register_sys_signals (bool) --

  • run_multiple (bool) --

返回:

没有什么

参数:

Host(Str):端口上主机的地址(Int):app上主机的端口(Sanic):Sanic应用程序实例SSL(可选 [SSLContext] ,可选):SSLContext。默认为 None 。袜子(可选 [socket.socket] ,可选):用于服务器的插座

接受来自的连接。默认为 None

Unix(可选 [str] ,可选):要监听的Unix套接字,而不是

Tcp端口。默认为 None

重用端口(bool,可选)(_P): True 适用于多个工人。缺省值

False

循环:与Ayncio兼容的事件循环。缺省值

None

协议(类型 [asyncio.Protocol] ,可选):要使用的协议。缺省值

HttpProtocol

Backlog(int,可选):排队连接的最大数量

传递给socket.listen()。默认为 100

REGISTER_SYS_SIGNAL(bool,可选):寄存器SIGINT和SIGTERM。

默认为 True

Run_Multiple(bool,可选):运行多个工作进程。缺省值

False

Run_async(bool,可选):返回AsyncServer对象。

默认为 False

连接:连接。默认为 None 。Signal(Signal,可选):Signal。默认为 Signal() 。州:州。默认为 None 。Asyncio_server_kwargs(可选 [Dict[str, Union[int, float] ]],可选):

Asyncio/uvloop create_server方法的键值参数。默认为 None

Version(str,可选):http版本。默认为 HTTP.VERSION_1

产生:

ServerError:如果没有安装aioquic,则无法运行HTTP/3服务器。

返回:

AsyncioServer:AsyncioServer对象 run_asyncTrue

sanic.server.try_use_uvloop()

使用uvloop而不是默认的asyncio循环。

返回类型:

None