Python的gunicorn服務器配置方式
Gunicorn 指南
什么是 Gunicorn?
Gunicorn(Green Unicorn)是一個兼容 WSGI 協(xié)議的 Python Web 服務器,廣泛用于部署如 Flask、Django 等 Python Web 框架。
其核心功能包括:
- 啟動 Web 服務
- 管理多個工作進程
- 解決 Python 原生并發(fā)性能不足問題
- 常與 Nginx 組合部署,形成 Nginx + Gunicorn 的架構
安裝 Gunicorn
pip install gunicorn gunicorn -h # 查看幫助
使用 Gunicorn 啟動 Flask 應用
1. 創(chuàng)建一個最基本的 Flask 應用
# app.py
from 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()
2. 使用 Gunicorn 啟動服務
在項目根目錄下運行:
gunicorn -w 4 -b 0.0.0.0:8000 app:app
說明:
- 第一個
app是文件名app.py - 第二個
app是 Flask 實例名app
Gunicorn 常用參數(shù)詳解
| 參數(shù) | 說明 |
|---|---|
| -c CONFIG | 使用配置文件(適合生產環(huán)境) |
| -b ADDRESS | 綁定的地址與端口,例如 0.0.0.0:8000 |
| -w, --workers | 工作進程數(shù),正整數(shù),默認 1 |
| -k, --worker-class | 工作模式,如 sync(默認)、gevent、eventlet |
| --threads | 每個 worker 的線程數(shù),默認 1 |
| --worker-connections | 最大客戶端并發(fā)數(shù),默認 1000 |
| --backlog | 待處理連接隊列最大長度,默認 2048 |
| -p, --pid | 設置 PID 文件路徑 |
| --access-logfile | 訪問日志路徑 |
| --access-logformat | 日志格式 |
| --error-logfile / --log-file | 錯誤日志路徑 |
| --log-level | 日志等級,默認 info,可設為 debug/warning/error |
| --limit-request-line | 請求行最大長度(默認 4094) |
| --limit-request-fields | 請求頭最大字段數(shù)(默認 100) |
| --limit-request-field-size | 請求頭字段最大字節(jié)數(shù)(默認 8190) |
| -t, --timeout | 請求超時時間,單位秒,默認 30 秒 |
| --daemon | 是否以守護進程運行,默認 False |
| --chdir | 切換工作目錄 |
| --graceful-timeout | 優(yōu)雅退出時間,默認 30 秒 |
| --keep-alive | Keep-alive 連接等待時間,默認 2 秒 |
| --reload | 開發(fā)模式:代碼變更時自動重載 |
| --spew | 打印服務器執(zhí)行的所有語句 |
| --check-config | 顯示當前配置 |
| -e, --env | 設置環(huán)境變量 |
使用配置文件啟動 Gunicorn
- 示例配置文件:gunicorn.conf.py
# 并行工作進程數(shù) workers = 4 # 每個工作進程線程數(shù) threads = 2 # 監(jiān)聽內網(wǎng)端口 bind = '127.0.0.1:5000' # 是否以守護進程運行 daemon = 'false' # 工作模式 worker_class = 'gevent' # 最大并發(fā)連接數(shù) worker_connections = 2000 # PID 文件路徑 pidfile = '/var/run/gunicorn.pid' # 日志路徑 accesslog = '/var/log/gunicorn_access.log' errorlog = '/var/log/gunicorn_error.log' # 日志級別 loglevel = 'warning'
- 啟動命令
gunicorn -c gunicorn.conf.py app:app
注意事項
Gunicorn 不支持 Windows 平臺
- 在 Windows 下運行可能出現(xiàn)以下錯誤:
ImportError: No module named _curses / fcntl
解決方法:
- 嘗試自行下載缺失模塊(如
fcntl.py) - 推薦在 Linux、WSL 或 Docker 環(huán)境中部署
推薦部署組合
生產環(huán)境中推薦以下組合:
Nginx + Gunicorn + Flask/Django
Nginx:作為前端反向代理和靜態(tài)資源服務Gunicorn:處理 Python 后端應用Supervisor:管理 Gunicorn 的守護進程運行
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python BeautifulSoup基本用法詳解(通過標簽及class定位元素)
這篇文章主要介紹了Python BeautifulSoup基本用法(通過標簽及class定位元素),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
python TinyDB輕量級文檔導向數(shù)據(jù)庫輕松存儲訪問
這篇文章主要為大家介紹了python TinyDB輕量級文檔導向數(shù)據(jù)庫輕松存儲訪問數(shù)據(jù)使用探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01
python3 設置多進程名稱并在ps命令中可見(Centos7 系統(tǒng))
setproctitle 是一個 Python 模塊,用于設置進程標題(process title),通過設置進程標題,可以讓進程在系統(tǒng)級的進程管理工具中展示自定義的名稱,方便用戶查看和管理進程,本文介紹python3 設置多進程名稱并在ps命令中可見,感興趣的朋友一起看看吧2024-03-03

