在之前的文章中有記錄WSGI容器的作用,以及我們知道常見的容器就只有的uWSGI和Gunicorn,在之前的文章中有記錄他們的特性及優缺點,在這就不在多做描述。接下來將着重記錄一下Gunicorn的一些配置:
config
-c CONFIG, --config CONFIG
Gunicorn配置文件路徑,路徑形式的字符串格式,如:
gunicorn -c gunicorn.conf manager:app
1
bind
-b ADDRESS, --bind ADDRESS
Gunicorn綁定服務器套接字,Host形式的字符串格式。Gunicorn可綁定多個套接字,如:
gunicorn -b 127.0.0.1:8000 -b [::1]:9000 manager:app
1
backlog
--backlog
未決連接的最大數量,即等待服務的客戶的數量。必須是正整數,一般設定在64~2048的范圍內,一般設置為2048,超過這個數字將導致客戶端在嘗試連接時錯誤
workers
-w INT, --workers INT
用於處理工作進程的數量,為正整數,默認為1。worker推薦的數量為當前的CPU個數*2 + 1。計算當前的CPU個數方法:
import multiprocessing
print multiprocessing.cpu_count()
1
2
worker_class
-k STRTING, --worker-class STRTING
要使用的工作模式,默認為sync。可引用以下常見類型“字符串”作為捆綁類:
sync
eventlet:需要下載eventlet>=0.9.7
gevent:需要下載gevent>=0.13
tornado:需要下載tornado>=0.2
gthread
gaiohttp:需要python 3.4和aiohttp>=0.21.5
threads
--threads INT
處理請求的工作線程數,使用指定數量的線程運行每個worker。為正整數,默認為1。
worker_connections
--worker-connections INT
最大客戶端並發數量,默認情況下這個值為1000。此設置將影響gevent和eventlet工作模式
max_requests
--max-requests INT
重新啟動之前,工作將處理的最大請求數。默認值為0。
max_requests_jitter
--max-requests-jitter INT
要添加到max_requests的最大抖動。抖動將導致每個工作的重啟被隨機化,這是為了避免所有工作被重啟。randint(0,max-requests-jitter)
timeout
-t INT, --timeout INT
超過這么多秒后工作將被殺掉,並重新啟動。一般設定為30秒
graceful_timeout
--graceful-timeout INT
優雅的人工超時時間,默認情況下,這個值為30。收到重啟信號后,工作人員有那么多時間來完成服務請求。在超時(從接收到重啟信號開始)之后仍然活着的工作將被強行殺死。
keepalive
--keep-alive INT
在keep-alive連接上等待請求的秒數,默認情況下值為2。一般設定在1~5秒之間。
limit_request_line
--limit-request-line INT
HTTP請求行的最大大小,此參數用於限制HTTP請求行的允許大小,默認情況下,這個值為4094。值是0~8190的數字。此參數可以防止任何DDOS攻擊
limit_request_fields
--limit-request-fields INT
限制HTTP請求中請求頭字段的數量。此字段用於限制請求頭字段的數量以防止DDOS攻擊,與limit-request-field-size一起使用可以提高安全性。默認情況下,這個值為100,這個值不能超過32768
limit_request_field_size
--limit-request-field-size INT
限制HTTP請求中請求頭的大小,默認情況下這個值為8190。值是一個整數或者0,當該值為0時,表示將對請求頭大小不做限制
reload
--reload
代碼更新時將重啟工作,默認為False。此設置用於開發,每當應用程序發生更改時,都會導致工作重新啟動。
reload_engine
--reload-engine STRTING
選擇重載的引擎,支持的有三種:
auto
pull
inotity:需要下載
spew
--spew
打印服務器執行過的每一條語句,默認False。此選擇為原子性的,即要么全部打印,要么全部不打印
check_config
--check-config
顯示現在的配置,默認值為False,即顯示。
preload_app
--preload
在工作進程被復制(派生)之前加載應用程序代碼,默認為False。通過預加載應用程序,你可以節省RAM資源,並且加快服務器啟動時間。
chdir
--chdir
加載應用程序之前將chdir目錄指定到指定目錄
daemon
--daemon
守護Gunicorn進程,默認False
raw_env
-e ENV, --env ENV
設置環境變量(key=value),將變量傳遞給執行環境,如:
gunicorin -b 127.0.0.1:8000 -e abc=123 manager:app
1
在配置文件中寫法:
raw_env=["abc=123"]
1
pidfile
-p FILE, --pid FILE
設置pid文件的文件名,如果不設置將不會創建pid文件
worker_tmp_dir
--worker-tmp-dir DIR
設置工作臨時文件目錄,如果不設置會采用默認值。
accesslog
--access-logfile FILE
要寫入的訪問日志目錄
access_log_format
--access-logformat STRING
要寫入的訪問日志格式。如:
access_log_format = '%(h)s %(l)s %(u)s %(t)s'
1
常見格式說明:
識別碼 說明
h 遠程地址
l “-“
u 用戶名
t 時間
r 狀態行,如:GET /test HTTP/1.1
m 請求方法
U 沒有查詢字符串的URL
q 查詢字符串
H 協議
s 狀態碼
B response長度
b response長度(CLF格式)
f 參考
a 用戶代理
T 請求時間,單位為s
D 請求時間,單位為ms
p 進程id
{Header}i 請求頭
{Header}o 相應頭
{Variable}e 環境變量
errorlog
--error-logfile FILE, --log-file FILE
要寫入錯誤日志的文件目錄。
loglevel
--log-level LEVEL
錯誤日志輸出等級。
支持的級別名稱為:
debug(調試)
info(信息)
warning(警告)
error(錯誤)
critical(危急)
更多配置:http://docs.gunicorn.org/en/stable/settings.html#server-mechanics
摘自:https://blog.csdn.net/y472360651/article/details/78538188