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.com 原創,沒有猿人學授權,請勿以任何形式轉載。***