FastAPI Backend Development Bootcamp · درس

النشر باستخدام Gunicorn وUvicorn

تعرّفوا على كيفية نشر FastAPI في بيئة الإنتاج باستخدام Gunicorn كمدير للعمليات وعمال Uvicorn.

الدرس 2 من 411 خطوة

النشر باستخدام Gunicorn وUvicorn درس مجاني في FastAPI Backend Development Bootcamp على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في FastAPI Backend Development Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة FastAPI Backend Development Bootcamp 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

From Dev to Production

When you're developing a FastAPI app, you often run it using a simple command like uvicorn main:app --reload.

This is great for development, as it automatically restarts your server when you make changes. But it's not suitable for production environments.

Why? A single process isn't robust or scalable. If it crashes, your entire API goes down! Production needs stability, performance, and fault tolerance.

Uvicorn: The ASGI Heart

FastAPI is an ASGI framework. ASGI stands for Asynchronous Server Gateway Interface, a standard for Python web servers to communicate with asynchronous web applications.

Uvicorn is a lightning-fast ASGI server implementation. It's what allows your FastAPI application to handle requests asynchronously and efficiently.

Think of Uvicorn as the engine that powers your FastAPI car. It's fast, but it only has one driver (process) by itself.

Direct Uvicorn Run

Here's a basic FastAPI application. To run it directly with Uvicorn (as you might in development), you'd use a command in your terminal.

The uvicorn main:app --host 0.0.0.0 --port 8000 command tells Uvicorn to run the app object from the main.py file, making it accessible on all network interfaces at port 8000.

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello from FastAPI!"}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

Uvicorn's Production Gaps

While Uvicorn is excellent, running it directly (especially with --reload) isn't ideal for production because:

  • Single Process: It typically runs as a single process, meaning it can only use one CPU core.
  • No Worker Management: If that single process crashes, your API stops completely.
  • No Process Supervision: Uvicorn doesn't automatically restart crashed workers or manage multiple instances for load balancing.

For production, we need something to manage Uvicorn workers.

Gunicorn: The Robust Manager

Enter Gunicorn (Green Unicorn)! Gunicorn is a production-ready WSGI HTTP server that can also manage ASGI applications (like FastAPI) by using specific worker classes.

Its main job is to act as a process manager. It spawns and supervises multiple worker processes, distributing incoming requests among them.

Think of Gunicorn as the pit crew chief, making sure all your Uvicorn engines are running smoothly and replacing them if one fails.

The Power Duo: Gunicorn & Uvicorn

The recommended way to deploy FastAPI in production is to combine Gunicorn with Uvicorn workers.

Here's how it works:

  • Gunicorn (Master Process): Listens for incoming requests and distributes them. It also supervises its workers.
  • Uvicorn (Worker Processes): Gunicorn spawns multiple Uvicorn instances. Each Uvicorn worker runs your FastAPI application.

This setup provides better performance, fault tolerance, and efficient resource utilization.

Gunicorn & Uvicorn in Action

To run the same FastAPI app using Gunicorn with Uvicorn workers, you would use a command like this. This setup is much more robust for production.

Here, -w 4 means 4 worker processes, and -k uvicorn.workers.UvicornWorker specifies that Gunicorn should use Uvicorn workers.

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello from FastAPI!"}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

Optimizing Worker Count

Deciding how many Gunicorn workers to use is crucial for performance. A common rule of thumb for CPU-bound applications is (2 * CPU_CORES) + 1.

For example, on a server with 4 CPU cores, you might start with (2 * 4) + 1 = 9 workers. This allows for some workers to handle I/O while others process CPU-intensive tasks.

Always monitor your server's resource usage (CPU, RAM) to fine-tune this number for your specific application load.

Securing Your Configuration

In production, never hardcode sensitive information like database credentials or API keys directly in your code.

Use environment variables instead. This keeps your secrets out of your codebase and makes your application more portable and secure.

FastAPI and Pydantic (which FastAPI uses) have excellent support for loading settings from environment variables, often through Pydantic's BaseSettings.

Deployment Check

Let's test your understanding of Gunicorn and Uvicorn roles in a production FastAPI deployment.

Recap: Robust Deployment

You've learned how to deploy FastAPI applications for production using the powerful combination of Gunicorn and Uvicorn.

  • Uvicorn is the ASGI server that runs your FastAPI app.
  • Gunicorn is the process manager that supervises multiple Uvicorn workers.
  • This setup provides scalability, fault tolerance, and better resource utilization.

Remember to optimize your worker count and always use environment variables for sensitive configurations. Next, you might explore cloud deployment strategies!

البدء مجانًا

تعلم FastAPI Backend Development Bootcamp مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
21
الدروس
84

الأسئلة الشائعة

هل درس «النشر باستخدام Gunicorn وUvicorn» مجاني؟

نعم — نص درس «النشر باستخدام Gunicorn وUvicorn» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة FastAPI Backend Development Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة FastAPI Backend Development Bootcamp 4 دروس في المجموع.

ماذا ستتعلم في «النشر باستخدام Gunicorn وUvicorn»؟

تعرّفوا على كيفية نشر FastAPI في بيئة الإنتاج باستخدام Gunicorn كمدير للعمليات وعمال Uvicorn. تتمرن على FastAPI Backend Development Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ FastAPI Backend Development Bootcamp؟

لا تُشترط خبرة سابقة. FastAPI Backend Development Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «النشر باستخدام Gunicorn وUvicorn»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس FastAPI Backend Development Bootcamp هذا؟

نعم. كل درس في FastAPI Backend Development Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تحويل تطبيقات FastAPI إلى حاويات Docker
  2. النشر باستخدام Gunicorn وUvicorn
  3. استراتيجيات النشر السحابي
  4. إدارة متغيرات البيئة والأسرار
← العودة إلى FastAPI Backend Development Bootcamp