0Pricing
FastAPI Backend Development Bootcamp · Ders

Gunicorn ve Uvicorn ile Dağıtım

Uvicorn çalışanlarıyla birlikte işlem yöneticisi olarak Gunicorn kullanarak FastAPI'yi üretim ortamına nasıl dağıtacağınızı öğrenin.

Gunicorn ve Uvicorn ile Dağıtım, CoddyKit'te ücretsiz bir FastAPI Backend Development Bootcamp dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, FastAPI Backend Development Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.

From Dev to Production

Bir FastAPI uygulaması geliştirirken, genellikle uvicorn main:app --reload gibi basit bir komut kullanarak çalıştırırsınız.

Bu, değişiklik yaptığınızda sunucunuzu otomatik olarak yeniden başlattığı için geliştirme aşamasında harikadır. Ancak üretim ortamları için uygun değildir.

Neden mi? Tek bir süreç ne sağlamdır ne de ölçeklenebilirdir. Eğer çökerse, tüm API'niz devre dışı kalır! Üretim ortamı kararlılık, performans ve hata toleransı gerektirir.

Uvicorn: The ASGI Heart

FastAPI bir ASGI framework'üdür. ASGI, Python web sunucularının asenkron web uygulamalarıyla iletişim kurmasını sağlayan bir standart olan Asynchronous Server Gateway Interface (Asenkron Sunucu Ağ Geçidi Arayüzü) anlamına gelir.

Uvicorn, ışık hızında bir ASGI sunucusu uygulamasıdır. FastAPI uygulamanızın istekleri asenkron ve verimli bir şekilde işlemesini sağlayan şey budur.

Uvicorn'u FastAPI arabanıza güç veren motor olarak düşünebilirsiniz. Hızlıdır, ancak tek başına sadece bir sürücüsü (süreci) vardır.

Direct Uvicorn Run

İşte temel bir FastAPI uygulaması. Bunu doğrudan Uvicorn ile çalıştırmak için (geliştirme aşamasında yapabileceğiniz gibi), terminalinizde bir komut kullanırsınız.

uvicorn main:app --host 0.0.0.0 --port 8000 komutu, Uvicorn'a main.py dosyasındaki app nesnesini çalıştırmasını söyler ve böylece uygulamayı 8000 numaralı port üzerinden tüm ağ arayüzlerinde erişilebilir kılar.

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

Uvicorn mükemmel bir araç olsa da, onu doğrudan (özellikle --reload ile) çalıştırmak üretim ortamı için ideal değildir çünkü:

  • Tek İşlem: Genellikle tek bir işlem olarak çalışır, bu da sadece bir CPU çekirdeğini kullanabileceği anlamına gelir.
  • İşçi (Worker) Yönetimi Yok: Eğer bu tek işlem çökerse, API'niz tamamen durur.
  • Süreç Denetimi Yok: Uvicorn, çöken işçileri otomatik olarak yeniden başlatmaz veya yük dengeleme için birden fazla örneği yönetmez.

Üretim ortamı için Uvicorn işçilerini yönetecek bir şeye ihtiyacımız var.

Gunicorn: The Robust Manager

Gunicorn (Green Unicorn) ile tanışın! Gunicorn, belirli worker sınıflarını kullanarak ASGI uygulamalarını (FastAPI gibi) da yönetebilen, üretime hazır bir WSGI HTTP sunucusudur.

Temel görevi bir süreç yöneticisi (process manager) olarak hareket etmektir. Birden fazla worker sürecini başlatır, denetler ve gelen istekleri bunlar arasında dağıtır.

Gunicorn'u bir pit ekibi şefi olarak düşünün; tüm Uvicorn motorlarınızın sorunsuz çalıştığından emin olur ve herhangi biri başarısız olursa onları yenisiyle değiştirir.

The Power Duo: Gunicorn & Uvicorn

FastAPI'yi üretim ortamında dağıtmanın önerilen yolu, Gunicorn'u Uvicorn worker'ları ile birleştirmektir.

İşleyişi şu şekildedir:

  • Gunicorn (Ana Süreç): Gelen istekleri dinler ve dağıtır. Ayrıca worker'larını denetler.
  • Uvicorn (Worker Süreçleri): Gunicorn birden fazla Uvicorn örneği oluşturur. Her bir Uvicorn worker'ı, FastAPI uygulamanızı çalıştırır.

Bu kurulum; daha iyi performans, hata toleransı ve verimli kaynak kullanımı sağlar.

Gunicorn & Uvicorn in Action

Aynı FastAPI uygulamasını Gunicorn ve Uvicorn çalışanları (workers) ile çalıştırmak için buna benzer bir komut kullanırsınız. Bu kurulum, üretim ortamı için çok daha dayanıklıdır.

Burada -w 4, 4 adet çalışan işlem (worker process) anlamına gelir ve -k uvicorn.workers.UvicornWorker, Gunicorn'un Uvicorn çalışanlarını kullanması gerektiğini belirtir.

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

Kaç adet Gunicorn worker (işçi) kullanılacağına karar vermek performans açısından çok önemlidir. CPU yoğunluklu uygulamalar için genel kabul görmüş kural (2 * CPU_ÇEKİRDEĞİ) + 1 şeklindedir.

Örneğin, 4 CPU çekirdeğine sahip bir sunucuda (2 * 4) + 1 = 9 worker ile başlayabilirsiniz. Bu, bazı worker'ların G/Ç (I/O) işlemlerini yönetirken diğerlerinin CPU yoğunluklu görevleri işlemesine olanak tanır.

Özel uygulama yükünüz için bu sayıyı hassas bir şekilde ayarlamak adına sunucunuzun kaynak kullanımını (CPU, RAM) her zaman izleyin.

Securing Your Configuration

Üretim ortamında, veritabanı kimlik bilgileri veya API anahtarları gibi hassas bilgileri asla doğrudan kodunuzun içine gömmeyin.

Bunun yerine ortam değişkenlerini kullanın. Bu, gizli bilgilerinizi kod tabanınızdan uzak tutar ve uygulamanızı daha taşınabilir ve güvenli hale getirir.

FastAPI ve (FastAPI'nin kullandığı) Pydantic, genellikle Pydantic'in BaseSettings yapısı aracılığıyla, ayarları ortam değişkenlerinden yüklemek için mükemmel bir desteğe sahiptir.

Deployment Check

Gunicorn ve Uvicorn'un FastAPI üretim dağıtımındaki rollerine ilişkin anlayışınızı test edelim.

Recap: Robust Deployment

FastAPI uygulamalarınızı Gunicorn ve Uvicorn'un güçlü kombinasyonunu kullanarak üretime nasıl alacağınızı öğrendiniz.

  • Uvicorn, FastAPI uygulamanızı çalıştıran ASGI sunucusudur.
  • Gunicorn, birden fazla Uvicorn çalışanını denetleyen süreç yöneticisidir.
  • Bu kurulum ölçeklenebilirlik, hata toleransı ve daha iyi kaynak kullanımı sağlar.

Çalışan sayınızı optimize etmeyi ve hassas yapılandırmalar için her zaman ortam değişkenlerini kullanmayı unutmayın. Bir sonraki adımda bulut dağıtım stratejilerini keşfedebilirsiniz!

Sıkça Sorulan Sorular

“Gunicorn ve Uvicorn ile Dağıtım” dersi ücretsiz mi?

Evet — “Gunicorn ve Uvicorn ile Dağıtım” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve FastAPI Backend Development Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.

“Gunicorn ve Uvicorn ile Dağıtım” dersinde ne öğreneceğim?

Uvicorn çalışanlarıyla birlikte işlem yöneticisi olarak Gunicorn kullanarak FastAPI'yi üretim ortamına nasıl dağıtacağınızı öğrenin. FastAPI Backend Development Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

FastAPI Backend Development Bootcamp öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te FastAPI Backend Development Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Gunicorn ve Uvicorn ile Dağıtım” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu FastAPI Backend Development Bootcamp dersinde kod yazıp çalıştırabilir miyim?

Evet. Her FastAPI Backend Development Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. FastAPI Uygulamalarını Docker ile Konteynerleştirme
  2. Gunicorn ve Uvicorn ile Dağıtım
  3. Bulut Dağıtım Stratejileri
  4. Ortam Değişkenlerini ve Gizli Bilgileri Yönetme
← FastAPI Backend Development Bootcamp Sayfasına Dön