基本概念:
兩者之間的區(qū)別:
在我們平時(shí)搭建一個(gè)Python Web項(xiàng)目時(shí),比如Django框架的項(xiàng)目,這時(shí)候常見的服務(wù)端架構(gòu):
接下來針對(duì)上文提到Django項(xiàng)目部署架構(gòu),聊聊這幾個(gè)協(xié)議在這過程中的作用:
簡(jiǎn)單來講,uWSGI也是一個(gè)Web服務(wù)器,他雖然同時(shí)實(shí)現(xiàn)了http、uwsgi、wsgi協(xié)議,但是更多被作為應(yīng)用服務(wù)器和應(yīng)用程序之間進(jìn)行通信。
那么這里就有個(gè)疑問了,為什么uWSGI都能直接處理http請(qǐng)求了,還需要Nginx服務(wù)器?這樣處理有幾點(diǎn)原因:
總而言之,Nginx服務(wù)器在處理http請(qǐng)求上,都有著uWSGI沒有的優(yōu)勢(shì),所以在日常部署環(huán)境中,經(jīng)常會(huì)使用到Nginx+uWSGI。
uWSGI有兩種安裝方式,一種是通過pip安裝,一種是通過源碼安裝。這里就簡(jiǎn)單介紹pip安裝方式,源碼安裝有興趣可以私下自己了解。
pip install uwsgi
uWSGI服務(wù)器在啟動(dòng)的過程中主要涉及到以下這幾個(gè)文件,其中uwsgi.sock還會(huì)涉及到Nginx相關(guān)部署的問題,在Nginx配置的時(shí)候回繼續(xù)展開講。
(venv) [root@mbb-48 uwsgi]# tree . . |-- uwsgi.ini # uwsgi配置文件 |-- uwsgi.log # uwsgi日志文件 |-- uwsgi.pid # uwsgi運(yùn)行進(jìn)程pid |-- uwsgi.sock # uwsgi socket `-- uwsgi.status # uwsgi狀態(tài)文件
以下配置是自己一個(gè)項(xiàng)目中用到的,其中的配置參數(shù)都是比較常見通用。
[uwsgi] chdir=/data/Novel/novel_test module=novel_test.wsgi:application home=/data/Novel/venv static-map=/static=/data/Novel/novel_test/static threads=8 http=0.0.0.0:23606 master=true vacuum=true thunder-lock=true uid=root gid=root harakiri=30 post-buffering=4096 socket=%(chdir)/uwsgi/uwsgi.sock stats=%(chdir)/uwsgi/uwsgi.status pidfile=%(chdir)/uwsgi/uwsgi.pid daemonize=%(chdir)/uwsgi/uwsgi.log
配置解析
額外配置
上面介紹了相關(guān)常用的配置參數(shù),當(dāng)設(shè)置uWSGI參數(shù)后,需要啟動(dòng)指定配置文件,以及有關(guān)暫停,重啟的動(dòng)作。
uwsgi --ini uwsgi.ini # 啟動(dòng)uWSGI uwsgi --stop uwsgi.pid # 暫停uWSGI uwsgi --reload uwsgi.pid # 重啟uWSGI
uWSGI之一Stats服務(wù)器機(jī)制,它能將uWSGI狀態(tài)作為一個(gè)JSON對(duì)象導(dǎo)出一個(gè)socket中,只需要像我們前面配置uWSGI配置文件一樣,添加stats選項(xiàng),跟著一個(gè)有效的socket地址接口。
當(dāng)你配置完畢后,就可以通過客戶端連接到指定的socket地址,將會(huì)獲得一個(gè)包含uWSGI內(nèi)部統(tǒng)計(jì)數(shù)據(jù)的JSON對(duì)象。
uwsgi --connect-and-read uwsgi.status
執(zhí)行完這個(gè)命令后,讀取的返回的結(jié)果是一個(gè)json字符串,字符串中包括每個(gè)線程的狀態(tài),整個(gè)應(yīng)用的負(fù)載,版本,監(jiān)聽隊(duì)列等詳細(xì)的信息。
uwsgitop查看實(shí)時(shí)狀態(tài)
uwsgitop是一個(gè)開源的實(shí)時(shí)監(jiān)控uWSGI服務(wù)器狀態(tài)的工具,安裝也十分簡(jiǎn)單:
pip install uwsgitop
具體uwsgitop像一個(gè)top命令,監(jiān)聽?wèi)?yīng)用程序并且使用socket地址進(jìn)行調(diào)用,查看進(jìn)程運(yùn)行狀態(tài),運(yùn)行詳細(xì)信息:
uwsgitop uwsgi/uwsgi.status uwsgi-2.0.19.1 - Sun Sep 20 15:58:48 2020 - req: 6 - RPS: 0 - lq: 0 - tx: 67.6K node: mbb-48 - cwd: /data/Novel/novel_test - uid: 0 - gid: 0 - masterpid: 15109 WID % PID REQ RPS EXC SIG STATUS AVG RSS VSZ TX ReSpwn HC RunT LastSpwn 1 100.0 15144 6 0 0 0 idle 15ms 0 0 67.6K 1 0 125.449 15:48:08 :2 16.7 - 1 0 - - idle - - - - - :3 16.7 - 1 0 - - idle - - - - - :0 33.3 - 2 0 - - idle - - - - - :1 33.3 - 2 0 - - idle - - - - -
具體有興趣的同學(xué)可以參考github地址:
https://github.com/xrmx/uwsgitop
關(guān)于uWSGI服務(wù)器相關(guān)使用就總結(jié)到這里,因?yàn)樵谄綍r(shí)工作中會(huì)經(jīng)常接觸到,但是由于沒有應(yīng)用到一些高并發(fā)的場(chǎng)景,對(duì)于uwsgi調(diào)優(yōu)方面沒有多少經(jīng)驗(yàn),等待以后遇到此類問題再繼續(xù)總結(jié)性能調(diào)優(yōu)方面的問題。同時(shí)有關(guān)Nginx方面的配置留到下一篇文章繼續(xù)講,未完待續(xù)。。。。。
以上就是淺談Python項(xiàng)目的服務(wù)器部署的詳細(xì)內(nèi)容,更多關(guān)于python 服務(wù)器部署的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
標(biāo)簽:赤峰 日照 雙鴨山 陽泉 克拉瑪依 金華 臨汾 貴州
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺談Python項(xiàng)目的服務(wù)器部署》,本文關(guān)鍵詞 淺談,Python,項(xiàng),目的,服務(wù)器,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。