uwsgi03----直接部署

1.http 和 http-socket的使用上有一些區別:前端

http: 本身會產生一個http進程(能夠認爲與nginx同一層)負責路由http請求給worker, http進程和worker之間使用的是uwsgi協議
http-socket: 不會產生http進程, 通常用於在前端webserver不支持uwsgi而僅支持http時使用, 他產生的worker使用的是http協議
所以, http 通常是做爲獨立部署的選項; http-socket 在前端webserver不支持uwsgi時使用,
若是前端webserver支持uwsgi, 則直接使用socket便可(tcp or unix)python

 

2.uwsgi 一些命令解釋linux

http://www.javashuo.com/article/p-fkunvhzk-kg.htmlnginx

圖一是socket方式,如今大部分web服務器(如nginx)支持uwsgi, 這是這三種方式最高效的一種形式,socket通訊速度會比http快

圖二是http-socket方式,這個適用於web服務器不支持uwsgi時。

後面2個圖都是http方式,使用http啓動uwsgi,系統會額外啓動一個http進程,從級別上來講,它和nginx是同一級別的,因此客戶端和uwsgi通訊,徹底能夠繞過nginx,不須要額外進行一個轉發(如圖三同樣),但很顯然,這是並非一個很明智但選擇,這樣會失去了nginx不少優秀的功能。

官方推薦的方式爲socket以及http-socket方式,顯然使用http方式會額外產生一個http進程,若是還經過nginx轉發,那麼效率上來講是相對比較低的。

2、processes/workers.
       表示開啓多進程,根據你的應有開啓合適的進程數,在一些參考資料上,可能會看到processes 2 * cpucores或者workers = 2 * cpucores,若是應有比較簡單,這樣設置通常能夠。若是想更合理,官方提供了uwsgitop去得到一個較爲合理的值。

3、threads & enable-threads
        python中存在GIL,實際上不存在真正意義上的多線程,可是否須要,這個就根據各自但需求設定了。結合processes:

processes=2
threads=4
表示2個進程,每一個進程中有4個線程。

       因爲GIL的存在,uwsgi索性默認不支持多線程,不對GIL進行初始化。但若是但願程序中的線程發揮做用,須要加入enable-threads=True;

      但若是已經在多線程模式(使用 threads 選項)下,那麼uWSGI將會自動啓用線程支持。

4、uid & gid & chmod-socket
       uwsgi不建議使用root權限去啓動uwsgi實例。能夠經過root用戶去運行uwsgi文件,當經過uid和gid去修改用戶(移除root權限)。而且,若是你使用的是socket的通訊方式,最好加上chmod-socket字段,在linux下,socket的啓動方式,套接字相似文件,你必須保證有權限去讀取它。

chmod-socket=660
uid=1000
gid=1000
5、master
       意味着啓動一個master主進程來管理其餘進程,建議啓動這個進程,在管理的時候比較方便;若是kill這個master進程,至關於關閉全部的uwsgi進程。

6、其餘
        chdir: 工程目錄(啓動文件所在位置)。 

        module: 應有程序文件(這個字段與wsgi-file類似?)

      callable:flask應用實例的名稱,是flask獨有的配置項(django不須要)。因爲flask存在特殊的機制,能夠實例化多個application,須要明確指出,收到請求時,uwsgi應該調用哪一個應用實例。

       buffer-size: 設置用於uwsgi包解析的內部緩存區大小,默認是4k。若是你容許接受較大數據的報頭,這個值能夠設置到64k,若是出現報頭過大的錯誤,能夠經過設置這個值解決。

       daemonize: 日誌輸出文件。

       disable-logging: 不記錄正常的請求日誌,只記錄錯誤日誌。

7、lazy-app
       這個字段有着特殊的做用,目前還在測試與使用,接下來再把發現的問題更新進來。

下面是是我flask項目的完整uwsgi文件:

socket=127.0.0.1:9088
#http-socket=127.0.0.1:8888
#http=127.0.0.1:8888
 
processes=2
threads=4
enable-threads=true
lazy-apps=true
 
uid=1000
gid=1000
chmod-socket=660
 
master=true
chdir=/data/myapp/
module=manage
callable=app
 
buffer-size=65536
daemonize=/data/log/uwsgi/app.log
 
 ———————————————— 
版權聲明:本文爲CSDN博主「_氣呀呀呀」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/l_vip/article/details/81487608
相關文章
相關標籤/搜索