Sanic 类的create_server()方法的API接口。
create_server() 方法/函数
定义
coroutine create_server(host: Optional[str] = None, port: Optional[int] = None, debug: bool = False, ssl: Union[dict, ssl.SSLContext, None] = None, sock: Optional[socket.socket] = None, protocol: Type[asyncio.protocols.Protocol] = None, backlog: int = 100, stop_event: Any = None, access_log: Optional[bool] = None, return_asyncio_server=False, asyncio_server_kwargs=None) → None
方法run()的异步版本。
在异步模式下启动sanic应用程序之前,此方法将通过trigger_events()
方法调用来处理调用before_start事件所需的操作。
注意 该方法不支持多进程 multiprocessing,也不是运行一个Sanic
应用的首选方式。用run()
方法最好。
参数
- host (str) : 运行的主机地址
- port (int) : 运行的主机端口
- debug(bool) : 开启debug 输出(降低Server性能)
- ssl : SSLContent, 或用于SSl 加密的certificate和key的位置。
- sock(socket) : 用于服务器接收连接的Socket。
- protocol : asyncio的Protocol类的子类
- backlog (int) :在拒绝新连接之前系统允许的未接收的连接的数量。
- stop_event (None) :在停止应用程序之前触发的事件 – 已弃用。
- access_log (bool) : 开启写访问日志(拖慢Server)
- return_asyncio_server (bool) : 是否需要返回asyncio.Server或立即启动它。
- asyncio_server_kwargs (dict) :用于asyncio/uvloop create_server的键值对参数。
返回值
无。
例子
from sanic import Sanic
from sanic import response
from signal import signal, SIGINT
import asyncio
import uvloop
app = Sanic(__name__)
@app.route("/")
async def test(request):
return response.json({"answer": "42"})
asyncio.set_event_loop(uvloop.new_event_loop())
server = app.create_server(host="0.0.0.0", port=8000, return_asyncio_server=True)
loop = asyncio.get_event_loop()
task = asyncio.ensure_future(server)
signal(SIGINT, lambda s, f: loop.stop())
try:
loop.run_forever()
except:
loop.stop()

我的公众号:猿人学 Python 上会分享更多心得体会,敬请关注。
***版权申明:若没有特殊说明,文章皆是猿人学 yuanrenxue.con 原创,没有猿人学授权,请勿以任何形式转载。***
说点什么吧...