Hướng dẫn config gunicorn và uvicorn để chạy fastapi

Hướng dẫn config gunicorn và uvicorn để chạy fastapi

Để chạy một ứng dụng FastAPI với GunicornUvicorn, 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