python3 gunicorn配置文件的用法解讀
python3 gunicorn配置文件
配置文件
import multiprocessing #并行工作進(jìn)程數(shù) workers = multiprocessing.cpu_count() * 2 + 1 # workers = 4 #指定每個(gè)工作者的線程數(shù),當(dāng)使用gevent時(shí),這個(gè)不起作用 threads = 4 # 控制是否在主進(jìn)程中預(yù)加載應(yīng)用程序。當(dāng)設(shè)置為 True 時(shí),Gunicorn 在主進(jìn)程中加載應(yīng)用程序,然后將其復(fù)制到每個(gè)工作進(jìn)程中。當(dāng)設(shè)置為 False 時(shí),應(yīng)用程序在每個(gè)工作進(jìn)程中獨(dú)立加載 preload_app = False #端口 5000 bind = '127.0.0.1:8200' #設(shè)置守護(hù)進(jìn)程,將進(jìn)程交給supervisor管理 daemon = 'true' #工作模式協(xié)程,使用gevent模式(協(xié)程模式),默認(rèn)的是sync模式,共有sync、eventlet、gevent、tornado worker_class = 'gevent' # 最大的并發(fā)請(qǐng)求數(shù)為 workers*2000 worker_connections = 2000 # 最大客戶端并發(fā)數(shù)量,默認(rèn)情況下這個(gè)值為1000。此設(shè)置將影響gevent和eventlet工作模式,當(dāng)最大請(qǐng)求數(shù)量達(dá)到時(shí)進(jìn)程會(huì)重啟 max_requests = 1000 #設(shè)置進(jìn)程文件目錄 pidfile = '/var/run/gunicorn.pid' #進(jìn)程名 proc_name = 'gunicorn_process' #設(shè)置訪問日志和錯(cuò)誤信息日志路徑 accesslog = "./Log/access.log" errorlog = "./Log/error.log" # 當(dāng)想關(guān)閉日志時(shí)可以設(shè)置 # accesslog = '/dev/null' # 禁用日志 # errorlog = '/dev/null' # 禁用日志 # 日志級(jí)別,這個(gè)日志級(jí)別指的是錯(cuò)誤日志的級(jí)別,而訪問日志的級(jí)別無法設(shè)置, loglevel = "error" #- debug: 最詳細(xì)的日志級(jí)別,通常用于調(diào)試目的。 #- info(默認(rèn)值): 提供一般的信息日志,適用于大多數(shù)情況。 #- warning: 輸出警告級(jí)別的日志消息,表示可能存在潛在問題。 #- error: 輸出錯(cuò)誤級(jí)別的日志消息,表示發(fā)生了一些錯(cuò)誤,但 Gunicorn 可以繼續(xù)運(yùn)行。 #- critical: 輸出嚴(yán)重錯(cuò)誤級(jí)別的日志消息,表示發(fā)生了嚴(yán)重問題,Gunicorn 無法繼續(xù)運(yùn)行。 # 設(shè)置gunicorn訪問日志格式,錯(cuò)誤日志無法設(shè)置 access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"' # INT:默認(rèn)情況下,這個(gè)值為30,在超時(shí)(從接收到重啟信號(hào)開始)之后仍然活著的工作將被強(qiáng)行殺死;一般使用默認(rèn) graceful_timeout = 60 # int:未決連接的最大數(shù)量,即等待服務(wù)的客戶的數(shù)量。默認(rèn)2048個(gè),一般不修改; backlog = 2048 # 超過這么多秒后工作將被殺掉,并重新啟動(dòng)。一般設(shè)定為30秒; timeout = 300 # INT:在keep-alive連接上等待請(qǐng)求的秒數(shù),默認(rèn)情況下值為2。一般設(shè)定在1~5秒之間。 keepalive = 5 # reload = True # 默認(rèn)為False。此設(shè)置用于開發(fā),每當(dāng)應(yīng)用程序發(fā)生更改時(shí),都會(huì)導(dǎo)致工作重新啟動(dòng)。 # 設(shè)置這個(gè)值為true 才會(huì)把打印信息記錄到錯(cuò)誤日志里,將stdout / stderr重定向到errorlog中的指定文件 capture_output = False # INT:HTTP請(qǐng)求頭的行數(shù)的最大大小,此參數(shù)用于限制HTTP請(qǐng)求行的允許大小,默認(rèn)情況下,這個(gè)值為4094。值是0~8190的數(shù)字 limit_request_line = 5120 # 限制HTTP請(qǐng)求中請(qǐng)求頭字段的數(shù)量。此字段用于限制請(qǐng)求頭字段的數(shù)量以防止DDOS攻擊,與limit-request-field-size一起使用可以提高安全性。默認(rèn)情況下,這個(gè)值為100,這個(gè)值不能超過32768 limit_request_fields = 101 # 限制HTTP請(qǐng)求中請(qǐng)求頭的大小,默認(rèn)情況下這個(gè)值為8190。值是一個(gè)整數(shù)或者0,當(dāng)該值為0時(shí),表示將對(duì)請(qǐng)求頭大小不做限制 limit_request_field_size = 0 # 設(shè)置gunicorn使用的python虛擬環(huán)境 # pythonpath='/home/your_path/venv/bin/python3' # 環(huán)境變量 # raw_env = 'APE_API_ENV=DEV'
服務(wù)啟動(dòng)、重啟、關(guān)閉
啟動(dòng)
- 配置文件啟動(dòng)命名
gunicorn -c gunicorn.py GunicornRun:app
- 查看服務(wù)
pstree -ap | grep gunicorn # 以樹結(jié)構(gòu)的形式
- 或者
lsof -i:端口號(hào)
查看
- 或
ps -ef | grep gunicorn
查看
- 或直接去配置好的進(jìn)程文件中查看主進(jìn)程號(hào)
重啟
kill -HUP 主進(jìn)程號(hào)
關(guān)閉
kill -9 主進(jìn)程號(hào) # 如果不能完全刪除,重復(fù)刪除所有的進(jìn)程,也可以配置sh腳本來執(zhí)行一次全部刪除
一次性關(guān)閉所有的gunicorn進(jìn)程,建立.sh文件,內(nèi)容如下:
for i in `ps -ef | grep gunicorn |awk '{print $2}'`;do kill -9 $i;done
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
anaconda虛擬環(huán)境默認(rèn)路徑的更改圖文教程
在Anaconda中如果沒有指定路徑,虛擬環(huán)境會(huì)默認(rèn)安裝在anaconda所安裝的目錄下,這篇文章主要給大家介紹了關(guān)于anaconda虛擬環(huán)境默認(rèn)路徑更改的相關(guān)資料,需要的朋友可以參考下2023-10-10python計(jì)算機(jī)視覺opencv矩形輪廓頂點(diǎn)位置確定
這篇文章主要為大家介紹了python計(jì)算機(jī)視覺opencv矩形輪廓頂點(diǎn)位置確定,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05python3 tkinter實(shí)現(xiàn)點(diǎn)擊一個(gè)按鈕跳出另一個(gè)窗口的方法
今天小編就為大家分享一篇python3 tkinter實(shí)現(xiàn)點(diǎn)擊一個(gè)按鈕跳出另一個(gè)窗口的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06Python基礎(chǔ)教程之淺拷貝和深拷貝實(shí)例詳解
這篇文章主要介紹了Python基礎(chǔ)教程之淺拷貝和深拷貝實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07pycharm中使用request和Pytest進(jìn)行接口測(cè)試的方法
這篇文章主要介紹了pycharm中使用request和Pytest進(jìn)行接口測(cè)試的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Python range與enumerate函數(shù)區(qū)別解析
這篇文章主要介紹了Python range與enumerate函數(shù)區(qū)別解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02Python通過zookeeper實(shí)現(xiàn)分布式服務(wù)代碼解析
這篇文章主要介紹了Python通過zookeeper實(shí)現(xiàn)分布式服務(wù)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07詳解Python 多線程 Timer定時(shí)器/延遲執(zhí)行、Event事件
這篇文章主要介紹了Python 多線程 Timer定時(shí)器/延遲執(zhí)行、Event事件的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06