日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

uwsgi配置理解

發布時間:2025/4/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uwsgi配置理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近使用uwsgi 部署了flask應用,出現了不少問題,仔細查閱了一下資料以及翻看了官方文檔,就對自己了解到的做個總結~~

一、http/http-socket/socket
uwsgi開頭當然少不了通信的接口。

有3種方式:

socket=127.0.0.1:8888

http=0.0.0.0:8888

http-socket=127.0.0.1:8888
?三個方式看起來十分的相似,閱讀了很多博客和官方文檔,下面是自己的一些理解(可能不完全正確)!

?

?

?

?

圖一是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轉發,那么效率上來說是相對比較低的。

二、processes/workers.
? ? ? ?表示開啟多進程,根據你的應有開啟合適的進程數,在一些參考資料上,可能會看到processes?=?2?*?cpucores或者workers = 2?*?cpucores,如果應有比較簡單,這樣設置一般可以。如果想更合理,官方提供了uwsgitop去獲得一個較為合理的值。

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

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

? ? ? ?由于GIL的存在,uwsgi索性默認不支持多線程,不對GIL進行初始化。但如果希望程序中的線程發揮作用,需要加入enable-threads=True;

? ? ? 但如果已經在多線程模式(使用?threads?選項)下,那么uWSGI將會自動啟用線程支持。

四、uid & gid & chmod-socket
? ? ? ?uwsgi不建議使用root權限去啟動uwsgi實例。可以通過root用戶去運行uwsgi文件,當通過uid和gid去修改用戶(移除root權限)。并且,如果你使用的是socket的通信方式,最好加上chmod-socket字段,在linux下,socket的啟動方式,套接字類似文件,你必須保證有權限去讀取它。

chmod-socket=660
uid=1000
gid=1000
五、master
? ? ? ?意味著啟動一個master主進程來管理其他進程,建議啟動這個進程,在管理的時候比較方便;如果kill這個master進程,相當于關閉所有的uwsgi進程。

六、其他
? ? ? ? chdir: 工程目錄(啟動文件所在位置)。?

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

? ? ? callable:flask應用實例的名稱,是flask獨有的配置項(django不需要)。由于flask存在特殊的機制,可以實例化多個application,需要明確指出,收到請求時,uwsgi應該調用哪個應用實例。

? ? ? ?buffer-size: 設置用于uwsgi包解析的內部緩存區大小,默認是4k。如果你允許接受較大數據的報頭,這個值可以設置到64k,如果出現報頭過大的錯誤,可以通過設置這個值解決。

? ? ? ?daemonize: 日志輸出文件。

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

七、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

轉載于:https://www.cnblogs.com/ExMan/p/10403916.html

總結

以上是生活随笔為你收集整理的uwsgi配置理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。