標籤:route eve pidfile 進程 res 開始 ssl 查看 format
python常見的web部署搭配nginx+gunicorn,下面記錄一下gunicorn的配置使用。
安裝gunicorn
pip install gunicorngunicorn -h # 查看使用的命令
gunicorn啟動一個flask的應用程式
# app.pyfrom flask import Flask def create_app(): app = Flask(__name__) return app app = create_app() @app.route(‘/‘) def index(): return ‘hello world!‘ if __name__ == ‘__main__‘: app.run()
# 第一個app指的是app.py檔案,第二個指的是flask應用的名字;gunicorn -w 4 -b 0.0.0.0:8000 app:app
gunicorn的參數詳解
-c CONFIG : CONFIG,設定檔的路徑,通過設定檔啟動;生產環境使用;-b ADDRESS : ADDRESS,ip加連接埠,綁定啟動並執行主機;-w INT, --workers INT:用於處理背景工作處理序的數量,為正整數,預設為1;-k STRTING, --worker-class STRTING:要使用的工作模式,預設為sync非同步,可以下載eventlet和gevent並指定--threads INT:處理請求的背景工作執行緒數,使用指定數量的線程運行每個worker。為正整數,預設為1。--worker-connections INT:最大用戶端並發數量,預設情況下這個值為1000。--backlog int:未決串連的最大數量,即等待服務的客戶的數量。預設2048個,一般不修改;-p FILE, --pid FILE:設定pid檔案的檔案名稱,如果不設定將不會建立pid檔案--access-logfile FILE : 要寫入的訪問日誌目錄--access-logformat STRING:要寫入的訪問日誌格式--error-logfile FILE, --log-file FILE : 要寫入錯誤記錄檔的檔案目錄。--log-level LEVEL : 錯誤記錄檔輸出等級。--limit-request-line INT : HTTP要求標頭的行數的最大大小,此參數用於限制HTTP請求行的允許大小,預設情況下,這個值為4094。值是0~8190的數字。--limit-request-fields INT : 限制HTTP請求中要求標頭欄位的數量。此欄位用於限制要求標頭欄位的數量以防止DDOS攻擊,預設情況下,這個值為100,這個值不能超過32768--limit-request-field-size INT : 限制HTTP請求中要求標頭的大小,預設情況下這個值為8190位元組。值是一個整數或者0,當該值為0時,表示將對要求標頭大小不做限制-t INT, --timeout INT:超過這麼多秒後工作將被殺掉,並重新啟動。一般設定為30秒;--daemon: 是否以守護進程啟動,預設false;--chdir: 在載入應用程式之前切換目錄;--graceful-timeout INT:預設情況下,這個值為30,在逾時(從接收到重啟訊號開始)之後仍然活著的工作將被強行殺死;一般使用預設;--keep-alive INT:在keep-alive串連上等待請求的秒數,預設情況下值為2。一般設定在1~5秒之間。--reload:預設為False。此設定用於開發,每當應用程式發生更改時,都會導致工作重新啟動。--spew:列印伺服器執行過的每一條語句,預設False。此選擇為原子性的,即要麼全部列印,要麼全部不列印;--check-config :顯示現在的配置,預設值為False,即顯示。-e ENV, --env ENV: 設定環境變數;
以設定檔的方式啟動
# gunicorn.conf# 並行背景工作處理序數workers = 4# 指定每個工作者的線程數threads = 2# 監聽內網連接埠5000bind = ‘127.0.0.1:5000‘# 設定守護進程,將進程交給supervisor管理daemon = ‘false‘# 工作模式協程worker_class = ‘gevent‘# 設定最大並發量worker_connections = 2000# 設定進程檔案目錄pidfile = ‘/var/run/gunicorn.pid‘# 設定訪問日誌和錯誤資訊日誌路徑accesslog = ‘/var/log/gunicorn_acess.log‘errorlog = ‘/var/log/gunicorn_error.log‘# 設定日誌記錄水平loglevel = ‘warning‘
gunicorn -c gunicorn.conf app:app
注意:
由於windows平台不支援gunicorn,gunicorn安裝成功後,啟動會出現
‘ImportError: No module named _curses / fcntl’錯誤;需要下載fcntl.py檔案;
python之gunicorn的配置