本文實例講述了Sanic框架應用部署方法。分享給大家供大家參考,具體如下:
簡介
Sanic是一個類似Flask的Python 3.5+ Web服務器,它的寫入速度非???。除了Flask之外,Sanic還支持異步請求處理程序。這意味著你可以使用Python 3.5中新的閃亮的異步/等待語法,使你的代碼非阻塞和快速。
在之前的博文中已經講到如何使用Sanic開發一個Python后臺程序,接下來記錄一下怎么部署Sanic應用
部署
內置的網絡服務器簡化了Sanic的部署,在定義了一個sanic.Sanic
實例之后,可以調用run()
方法再傳入以下關鍵字參數:
127.0.0.1
port:啟動服務器的斷開,默認為8000 debug:啟用調試輸出,默認為False
ssl:SSLContext用于工作人員的ssl加密,默認為None
sock:服務器接受連接的套接字,默認為None
wrokers:產生工作進程的數量,默認為1 loop:一個asyncio
兼容的循環事件。如果沒有指定,Sanic創建它自己的事情循環,默認為None
protocol:asyncio.protocol
的子類,默認為HttpProtocol
wrokers
默認情況下,Sanic只使用一個CPU在主進程中進行監聽,有時我們為了資源利用最大化,可以指定run
參數的workers
數量即可:
app.run(host="0.0.0.0",port=5000,wrokers=4)
Sanic會自動在多個進行中交換路線,所以如果有多個CPU,建議盡可能多的workers
通過命令運行
如果你喜歡命令行參數,則你可以通過執行模塊來啟動Sanic服務器。例如,你將Sanic初始化為app的文件名為manager.py,則可以像這樣運行服務器:
代碼如下:python -m sanic manager.app --host=0.0.0.0 --port=5000 --workers=4
用命令行的方式運行sanic程序,則不需要再Python文件中調用app.run()
方法了
通過Gunicorn運行
了解過Gunicorn的都知道,Gunicorn為WSGI容器的一種,常見的還有uWSGI(可參考附錄Gunicorn配置說明)
為了使用Gunicorn運行Sanic程序,我們還需要設置worker-class
參數,并將其設置為sanic.worker.GunicornWorker
:
代碼如下:gunicorn manager:app bind 0.0.0.0:5000 worker-class sanic.worker.GunicornWorker
如果你的應用程序遭受內存泄漏,你可以將Gunicorn配置在完成指定數量的請求之后正常重新啟動工作程序,這可以幫助限制內存泄漏的影響
附錄:Gunicorn配置說明
在前面的文章《Python Web編程之WSGI協議》中有記錄WSGI容器的作用,以及我們知道常見的容器就只有的uWSGI和Gunicorn,在《Python Web編程之WSGI協議》中有記錄他們的特性及優缺點,在這就不在多做描述。接下來將著重記錄一下Gunicorn的一些配置:
新聞熱點
疑難解答