Sanic create_server() 方法/函数

Sanic教程 2019-06-04 17:13:24 阅读(4316) 评论(0)

Sanic 类的create_server()方法的API接口。

Sanic create_server() 方法函数

 

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()

猿人学banner宣传图

我的公众号:猿人学 Python 上会分享更多心得体会,敬请关注。

***版权申明:若没有特殊说明,文章皆是猿人学 yuanrenxue.con 原创,没有猿人学授权,请勿以任何形式转载。***

说点什么吧...