Uvicorn ile ASGI Tabanlı Python Uygulaması Çalıştırmak: src.asgi Örneği
Modern Python dünyasında ASGI (Asynchronous Server Gateway Interface), web uygulamalarını daha hızlı, daha ölçeklenebilir ve daha verimli…
Uvicorn ile ASGI Tabanlı Python Uygulaması Çalıştırmak: src.asgi Örneği

Modern Python dünyasında ASGI (Asynchronous Server Gateway Interface), web uygulamalarını daha hızlı, daha ölçeklenebilir ve daha verimli hale getiriyor. Django’nun yeni versiyonları, FastAPI ve Starlette gibi framework’ler artık tamamen ASGI temelli.
Bu mimaride en çok kullanılan web server ise Uvicorn.
Bu yazıda Uvicorn’un nasıl çalıştığını; özellikle de şu kodun arka planını adım adım inceleyeceğiz:
ASGI Nedir? Neden Önemlidir?
ASGI, WSGI’nin (Flask/Django klasik çalıştırma yöntemi) modern ve asenkron halidir.
Avantajları: Aynı anda yüzlerce / binlerce request işleyebilir. WebSocket, HTTP/2, long-polling gibi modern protokoller desteklenir. FastAPI ve Django Channels gibi teknolojilerin temelini oluşturur. Uvicorn da bu ASGI uygulamalarını yüksek performansla çalıştıran bir server’dır.
1.Import komutu

Bu kod Basit görünse de kritik. Bu satır ile Uvicorn’un tüm server fonksiyonlarına erişim sağlarız. Artık Python dosyası içinden bir web server başlatabiliriz. İmport komutu ile biz uvicorn daki tüm kodlara erişebiliriz.
2.Config Nesnesi: Sunucunun Tüm Ayarları Burada

Config, Uvicorn’un nasıl çalışacağını belirleyen bir yapılandırma sınıfıdır.
storepy.asgi:application Bu, çalıştırmak istediğimiz ASGI uygulamasıdır.
storepy.asgi → Projedeki storepy/asgi.py dosyasını temsil eder.
application → O dosyanın içindeki ASGI uygulaması
Yani Uvicorn’a diyoruz ki: “Git storepy/asgi.py dosyasını aç, içindeki application objesini server olarak çalıştır.”
Django, FastAPI, Starlette gibi frameworklerde bu nesne uygulamayı temsil eder.
port=8000 8000 → Tarayıcıdan erişim adresi: http://127.0.0.1:8000
8reload=True Bu ayar sayesinde: Kodda değişiklik yaptığında server otomatik yeniden başlar. Flask’ın debug=True mantığına benzer. Geliştirme ortamı için ideal, production için önerilmez.
lifespan="off" ASGI’nin startup/shutdown event’lerini kapatır.Çoğu modern uygulamada: lifespan=”auto” kullanılmaktadır. Ancak özel projelerde (özellikle eski Django veya custom ASGI router’larında) lifespan devre dışı bırakılır.
Server Nesnesi: Uvicorn’un Core Çalışma Sistemi

Bu kod ile Uvicorn server’ını oluşturulur. Portu, host’u, reload modunu ve ASGI uygulamasını içine gömer. Hazır bir “sunucu” objesi döner. Bu yöntem, CLI kullanımından (örn: uvicorn app:app) daha profesyoneldir çünkü server objesini programatik olarak kontrol edebilirsin.
Server.run() — Sunucuyu Başlatan Komut

Bu komut Event loop’u başlatır. Port 8000'i dinlemeye açar. ASGI uygulamasını yükler. Gelen tüm HTTP isteklerini application nesnesine yönlendirir. Bu fonksiyon bloklayıcıdır. Yani terminali durdurana kadar server çalışmaya devam eder.
Sonuç: Modern Python Projelerinde Uvicorn Şarttır. Bu kod küçük görünse de modern Python web geliştirmenin temel yapı taşını oluşturur. storepy.asgi:application gibi bir ASGI uygulamasını: temiz, hızlı, programatik, yeniden yükleme destekli bir şekilde çalıştırmak için Uvicorn en iyi çözümlerden biridir.
메타데이터
- post_id
- dc734f2cfc80
- slug
- uvicorn-ile-asgi-tabanlı-python-uygulaması-çalıştırmak-src-asgi-örneği-dc734f2cfc80
- url
- https://medium.com/@oguz.kaan.kara/uvicorn-ile-asgi-tabanl%C4%B1-python-uygulamas%C4%B1-%C3%A7al%C4%B1%C5%9Ft%C4%B1rmak-src-asgi-%C3%B6rne%C4%9Fi-dc734f2cfc80
- canonical_url
- https://medium.com/@oguz.kaan.kara/uvicorn-ile-asgi-tabanl%C4%B1-python-uygulamas%C4%B1-%C3%A7al%C4%B1%C5%9Ft%C4%B1rmak-src-asgi-%C3%B6rne%C4%9Fi-dc734f2cfc80
- author_url
- https://medium.com/@oguz.kaan.kara
- status
- ok
- fetched_at
- 2026-06-22 05:41:33