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