Hướng dẫn config gunicorn và uvicorn để chạy fastapi
Để chạy một ứng dụng FastAPI với Gunicorn
và Uvicorn
, bạn cần cấu hình Gunicorn
để sử dụng UvicornWorker
. Đây là cách phổ biến và hiệu quả để chạy ứng dụng FastAPI trong môi trường production.
Mình đầu tiên tạo môi trường ảo :
python -m venv .venv
dưới đây là file requirements.txt
annotated-types==0.7.0
anyio==4.9.0
APScheduler==3.11.0
async-timeout==5.0.1
click==8.2.0
colorama==0.4.6
exceptiongroup==1.3.0
fastapi==0.115.12
h11==0.16.0
httptools==0.6.4
idna==3.10
Jinja2==3.1.6
MarkupSafe==3.0.2
pydantic==2.11.4
pydantic_core==2.33.2
python-dotenv==1.1.0
PyYAML==6.0.2
redis==6.1.0
sniffio==1.3.1
starlette==0.46.2
typing-inspection==0.4.0
typing_extensions==4.13.2
tzdata==2025.2
tzlocal==5.3.1
uvicorn==0.34.2
watchfiles==1.0.5
websockets==15.0.1
Tiếp theo mình cài với lệnh :
pip install -r requirements.txt
mình config như sau
sau khi chọn config sẽ có file gunicorn_conf.py
bind = '0.0.0.0:7125'
user = 'root'
workers = 2
threads = 2
backlog = 512
chdir = '/www/wwwroot/fastapi'
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
loglevel = 'info'
worker_class = 'uvicorn.workers.UvicornWorker'
errorlog = chdir + '/logs/error.log'
accesslog = chdir + '/logs/access.log'
pidfile = chdir + '/logs/fastapi.pid'
nhớ config worker_class = 'uvicorn.workers.UvicornWorker'
Mình nhớ cài các gói như sau : /www/wwwroot/fastapi/0d32bced91aa5c2ee5696fc7995370ae_venv/bin/python3 -m pip freeze > requirements.txt do vps sẽ tạo 1 folder vitural ảo : /0d32bced91aa5c2ee5696fc7995370ae_venv