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) --
- 返回类型:
-
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_async 是 True 。
-
sanic.server.
try_use_uvloop
()¶ 使用uvloop而不是默认的asyncio循环。
- 返回类型:
None