Sanic create_server() 方法/函式

veelion發表於2019-06-04

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

相關文章