← Back to list

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…

Oguz Kaan Kara · 2025-11-13 02:56 · 0 claps · 2.2 min read
#python #backend-development #web-development #asgi #uvicorn
Open on Medium ↗
Wiki topics: 🌐 · Web Development

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