基本概念:
兩者之間的區別:
在我們平時搭建一個Python Web項目時,比如Django框架的項目,這時候常見的服務端架構:
接下來針對上文提到Django項目部署架構,聊聊這幾個協議在這過程中的作用:
簡單來講,uWSGI也是一個Web服務器,他雖然同時實現了http、uwsgi、wsgi協議,但是更多被作為應用服務器和應用程序之間進行通信。
那么這里就有個疑問了,為什么uWSGI都能直接處理http請求了,還需要Nginx服務器?這樣處理有幾點原因:
總而言之,Nginx服務器在處理http請求上,都有著uWSGI沒有的優勢,所以在日常部署環境中,經常會使用到Nginx+uWSGI。
uWSGI有兩種安裝方式,一種是通過pip安裝,一種是通過源碼安裝。這里就簡單介紹pip安裝方式,源碼安裝有興趣可以私下自己了解。
pip install uwsgi
uWSGI服務器在啟動的過程中主要涉及到以下這幾個文件,其中uwsgi.sock還會涉及到Nginx相關部署的問題,在Nginx配置的時候回繼續展開講。
(venv) [root@mbb-48 uwsgi]# tree . . |-- uwsgi.ini # uwsgi配置文件 |-- uwsgi.log # uwsgi日志文件 |-- uwsgi.pid # uwsgi運行進程pid |-- uwsgi.sock # uwsgi socket `-- uwsgi.status # uwsgi狀態文件
以下配置是自己一個項目中用到的,其中的配置參數都是比較常見通用。
[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
配置解析
額外配置
上面介紹了相關常用的配置參數,當設置uWSGI參數后,需要啟動指定配置文件,以及有關暫停,重啟的動作。
uwsgi --ini uwsgi.ini # 啟動uWSGI uwsgi --stop uwsgi.pid # 暫停uWSGI uwsgi --reload uwsgi.pid # 重啟uWSGI
uWSGI之一Stats服務器機制,它能將uWSGI狀態作為一個JSON對象導出一個socket中,只需要像我們前面配置uWSGI配置文件一樣,添加stats選項,跟著一個有效的socket地址接口。
當你配置完畢后,就可以通過客戶端連接到指定的socket地址,將會獲得一個包含uWSGI內部統計數據的JSON對象。
uwsgi --connect-and-read uwsgi.status
執行完這個命令后,讀取的返回的結果是一個json字符串,字符串中包括每個線程的狀態,整個應用的負載,版本,監聽隊列等詳細的信息。
uwsgitop查看實時狀態
uwsgitop是一個開源的實時監控uWSGI服務器狀態的工具,安裝也十分簡單:
pip install uwsgitop
具體uwsgitop像一個top命令,監聽應用程序并且使用socket地址進行調用,查看進程運行狀態,運行詳細信息:
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 - - - - -
具體有興趣的同學可以參考github地址:
https://github.com/xrmx/uwsgitop
關于uWSGI服務器相關使用就總結到這里,因為在平時工作中會經常接觸到,但是由于沒有應用到一些高并發的場景,對于uwsgi調優方面沒有多少經驗,等待以后遇到此類問題再繼續總結性能調優方面的問題。同時有關Nginx方面的配置留到下一篇文章繼續講,未完待續。。。。。
以上就是淺談Python項目的服務器部署的詳細內容,更多關于python 服務器部署的資料請關注腳本之家其它相關文章!