Proje tasarımı
- Python kursu
- İleri seviye
- Ders 79/83
- 6 dk
İleri seviye finali iskeletini tasarlarsın.
Proje tasarımı
Bu 5 derslik projede bir görev API'si kuracaksın. Her ders bir katman ekler: önce async iskelet, sonra asyncio.gather, sonra SQLAlchemy ile veritabanı, sonra FastAPI yolu, son olarak bir decorator ile çağrı günlüğü.
import asyncio
async def fetch_tasks():
return [...]İlk ders sadece iskeleti kurar: bir async işlev, sabit bir görev listesi döndürür. Sonraki derslerde bu işlevi gerçek veritabanına bağlayacaksın. Tasarımın basit başlaması, katmanların net görünmesini sağlar.
Katman sırası
Projenin katmanları sırayla eklenir:
- Async iskelet:
fetch_tasksişlevi. - Async katman:
asyncio.gatherile çok kaynak. - Veritabanı: SQLAlchemy
Taskmodeli. - Yol: FastAPI
/tasks. - Decorator:
log_callile günlük.
Her dersin başlangıç kodu önceki dersin çözümünü içerir; yalnızca yeni katmanı eklersin. Bu, gerçek dünya projelerinin büyüme biçimidir.
Uygulama fetch_tasks iskeletini yaz
import asyncio ile başla. async def fetch_tasks(): tanımla ve gövdesinde return [{"id": 1, "title": "Görev 1"}, {"id": 2, "title": "Görev 2"}] yapsın. Sonra print(asyncio.run(fetch_tasks())) ile sonucu yazdır.
Başlangıç kodu
# asyncio modülünü içe aktar
# fetch_tasks adlı async bir işlev tanımla
# işlev sabit bir görev listesi döndürsün
# asyncio.run ile işlevi çalıştır ve sonucu yazdırÖrnek çözüm
import asyncio
async def fetch_tasks():
return [{"id": 1, "title": "Görev 1"}, {"id": 2, "title": "Görev 2"}]
print(asyncio.run(fetch_tasks()))Beklenen çıktı
[{'id': 1, 'title': 'Görev 1'}, {'id': 2, 'title': 'Görev 2'}]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bu projenin ilk dersi neyi tanımlar?
- FastAPI uygulamasını
- Async fetch_tasks iskeletini Doğru cevap
- SQLAlchemy modelini
- Decorator'u
Açıklama: İlk ders yalnızca async fetch_tasks iskeletini tanımlar.
2 fetch_tasks tanımını tamamla
async def fetch_tasks():
____
async def fetch_tasks():
return [...]
Açıklama: fetch_tasks bir liste döndürür.
3 Katmanları eşleştir
| Kavram | Anlamı |
|---|---|
fetch_tasks |
Async iskelet |
asyncio.gather |
Çok kaynak |
Task |
Veritabanı modeli |
@app.get |
FastAPI yolu |