
یک API پایتون فقط با اجرای uvicorn main:app به سرویس Production تبدیل نمیشود. نسخه Python، مدیریت وابستگیها، تعداد Worker، اتصال دیتابیس و مسیر سلامت باید مشخص باشند. در این راهنما یک پروژه FastAPI را برای استقرار پایدار آماده میکنیم.
ساختار پیشنهادی پروژه FastAPI
فایل requirements.txt یا pyproject.toml را کنار سورس نگه دارید و نسخه وابستگیها را تا حد ممکن ثابت کنید. برنامه باید یک شیء ASGI مشخص داشته باشد؛ برای نمونه app در فایل main.py.
main.pyیا پکیج اصلی برنامهrequirements.txtیا فایل Poetry و uv- مسیر ساده مثل
/healthبرای Health Check - Migrationهای دیتابیس در فرمان Release
فرمان اجرای درست
برای بار سبک میتوانید Uvicorn را مستقیم اجرا کنید، اما برای مدیریت بهتر پردازشها معمولاً Gunicorn با Workerهای Uvicorn انتخاب مناسبتری است:
gunicorn main:app -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:$PORT
پورت را ثابت ننویسید. پاستا مقدار PORT را در اختیار برنامه قرار میدهد و سرویس باید روی 0.0.0.0 گوش کند.
اتصال PostgreSQL و اجرای Migration
یک PostgreSQL مدیریتشده بسازید و آن را به پروژه متصل کنید تا DATABASE_URL بهصورت امن در اختیار اپلیکیشن قرار گیرد. اجرای Alembic را به Release Command منتقل کنید تا پیش از انتشار نسخه جدید فقط یک بار اجرا شود:
alembic upgrade head
قرار دادن Migration در Startup هر Replica میتواند باعث اجرای همزمان و قفل شدن دیتابیس شود.
Health Check و زمان شروع
مسیر سلامت باید سریع باشد و به سرویسهای خارجی سنگین وابسته نباشد. اگر برنامه برای بارگذاری مدل یا Cache زمان نیاز دارد، Timeout اولیه را متناسب تنظیم کنید. پاسخ کد ۲۰۰ از مسیر سلامت، شرط ورود Replica به چرخه ترافیک است.
مصرف حافظه و تعداد Worker
هر Worker حافظه جدا مصرف میکند. برای پلنهای کوچک با یک Worker شروع کنید و بعد از مشاهده مصرف CPU، حافظه و زمان پاسخ آن را افزایش دهید. اگر بار متغیر است، Autoscaling را بر اساس CPU یا حافظه فعال کنید؛ افزایش بیدلیل Worker روی پلن کوچک معمولاً باعث OOM میشود.
خطاهای رایج هاست پایتون
- ModuleNotFoundError: وابستگی در فایل requirements ثبت نشده است.
- Connection refused: آدرس دیتابیس یا نام متغیر محیطی اشتباه است.
- Health Check failed: برنامه روی localhost یا پورت دیگری گوش میدهد.
- Permission denied: برنامه تلاش میکند در مسیر فقطخواندنی بنویسد؛ برای داده پایدار Volume متصل کنید.
برای شروع، صفحه هاست پایتون پاستا و مستندات استقرار را ببینید.
نظرها
هنوز نظری ثبت نشده است. اولین نفر باشید.