gunicorn部署的flask,多程序日誌問題,

2021-10-05 15:29:38 字數 537 閱讀 2741

使用flask時候,我們經常使用logging來寫日誌。

但是gunicorn是多程序啟動的,logging程序不安全!

日誌經常會缺,只有一部分日誌。

就算整合到gunicorn的日誌中

if __name__ != '__main__':

gunicorn_logger = logging.getlogger('gunicorn.error')

還是只有部分日誌。

問題苦惱了我很久,今天無意間發現了乙個包concurrent_log

可以解決此類問題,具體使用方法在git上很明白,我就不贅述了。

原始碼也簡單看了看,很簡潔,簡單的思想就是用了2個鎖。

乙個鎖是靜態變數,基於gil就可以保證python的執行緒安全。

另乙個是程序鎖,用的是portalock檔案鎖,實現了nt和posix,所以大部分部署gunicorn的地方都能用。

concurrent_log就可以分別保證執行緒和程序安全,就git作者的測試來說(500k行log),效能還有所提高。

gunicorn 部署 flask 應用

一般比較習慣使用uwsgi進行部署django,flask應用。但,有時受許可權限制,無法安裝uwsgi,所以就使用gunicorn進行部署。之前使用python3的使用,發現 supervisor是不支援。所以就不打算用supervisor了。純粹介紹gunicorn 簡單部署方法,完整流程。環境...

使用gunicorn部署Flask

gunicorn是乙個python wsgi的web服務框架,只支援在unix系統上執行,於ruby的unicorn專案。gunicorn使用prefork master worker模型,能夠與各種wsgi web框架協作。gunicorn安裝非常簡單,使用命令pip install guncor...

gunicorn部署flask服務

greenlet是乙個輕量級的協程庫,gevent是基於greenlet的網路庫。gunicorn是支援wsgi協議的http server,gevent是它支援的模式之一。pip install gunicorn pip install gevent 3.啟動 gunicorn啟動有很多引數,可以...