İleri asyncio: yüksek eşzamanlı servisler
asyncio'nun içini anlar; yapılandırılmış eşzamanlılık, geri basınç ve zarif kapanışla binlerce bağlantıyı kaldıran servisler yazarsın.
Seviye 401 · 17 ders · 18 pratik lab
Dersler
Olay döngüsünün içi
- Olay döngüsü nasıl çalışır: hazır kuyruğu ve seçici
- Eşyordamlar, Future ve Task ilişkisi
- Yapılandırılmış eşzamanlılık: TaskGroup ve hata grupları
- İptalin yayılması ve shield
- Kısa görev: kaybolan görevleri ve sessiz hataları bul
Akışlar ve protokoller
- Geri basınç: yavaş tüketiciyi korumak
- Protokol ve taşıma katmanı ile alt düzey sunucu
- aiohttp ile istemci ve sunucu
- Eşzamansız veritabanı erişimi
- asyncio ile alt süreç yönetmek
- Kısa görev: eşzamansız TCP aktarıcısı
Dayanıklılık ve ölçüm
- Belirteç kovası ile hız sınırı
- Sinyallerle zarif kapanış
- asyncio hata ayıklama kipi ve yavaş geri çağrılar
- Eşzamansız kodu test etmek
- Kısa görev: kendi servisine yük testi uygula
Bitirme
- Bitirme görevi: hız sınırlı, zarif kapanan API ağ geçidi
Pratik lablar
- Zamanlanmış hatırlatmaları döngüye vermek: call_later ile farklı gecikmelerde çalışacak hatırlatmaları planla ve iptal edilenin hiç çalışmadığını testle göster.
- Kaybolan görev başvurusunu yakalamak: Başvurusu tutulmadığı için yarıda kaybolan arka plan görevlerini bir kümede sakla ve istisnalarını sessizce yutmak yerine kaydet.
- Geri çağrılı kitaplığı Future ile sarmak: Geri çağrı ile sonuç veren eski bir kitaplığı, başka iş parçacığından gelen sonucu döngüye güvenle aktaran awaitable bir arayüze çevir.
- İptalde geçici dosyayı temizlemek: İptal edildiğinde geçici dosyasını bırakan indirme görevine finally ile temizlik ekle ve CancelledError'ı yutmadığını göster.
- İstisna grubunu türlerine ayırmak: TaskGroup'tan çıkan istisna grubunu except* ile ağ ve doğrulama hatalarına ayır, her türü ayrı say ve beklenmeyeni yeniden yükselt.
- Kritik yazmayı iptalden korumak: Zaman aşımı yüzünden yarım kalan iki adımlı kaydı shield ile koru; iptal gelse bile kaydın ya tümüyle ya hiç yazıldığını testle kanıtla.
- Akışlarla satır yankı sunucusu: asyncio.start_server ile satır satır yankılayan, boş satırda bağlantıyı düzgün kapatan sunucuyu yaz.
- Yavaş okuyucuda belleği korumak: Yavaş istemciye veri basarken belleği şişen sunucuya drain ve yazma tamponu sınırı ekle, en yüksek bellek kullanımını ölç.
- Protocol sınıfıyla uzunluk önekli çerçeveler: Parça parça gelen veriden uzunluk önekli çerçeveleri toplayan düşük seviyeli Protocol sınıfını yaz; aşırı büyük çerçevede bağlantıyı kes.
- Lab sayfalarının durumunu eşzamanlı almak: aiohttp ile tek oturum üzerinden lab hedefindeki adres listesinin durum kodlarını eşzamanlı topla ve zaman aşımına uğrayanı ayrı işaretle.
- Asılı kalan alt süreci sonlandırmak: asyncio ile çalıştırılan komuta zaman aşımı koy; süre dolunca süreci sonlandır, zombi bırakma ve kısmi çıktıyı döndür.
- Bağlantı havuzu açlığını gidermek: Bağlantıyı gereğinden uzun tutan asenkron veri erişim katmanında havuz tükenmesini bul, kapsamı daralt ve yük testinde beklemelerin kalktığını göster.
- Asenkron fonksiyona ilk testi yazmak: Sahte bir saat ve sahte servis kullanarak asenkron fiyat toplayıcı için gerçek beklemesiz çalışan testler yaz.
- Jeton kovası ile istek sınırlamak: Saniyedeki istek sayısını ve patlama boyutunu sınırlayan asenkron jeton kovasını yaz ve sınırın aşılmadığını ölçümle göster.
- SIGTERM'de açık işleri bitirip kapanmak: Sinyal gelince yeni işi kabul etmeyen, açık işlere süre tanıyan ve süre dolunca kalanları iptal eden kapanış akışını hizmete ekle.
- Alt süreç çıktısını asenkron toplamak: asyncio.create_subprocess_exec ile üç komutu eşzamanlı çalıştır; her birinin çıktısını ve dönüş kodunu topla, kabuk kullanma.
- Zaman aşımını beklemeden sınamak: Otuz saniyelik zaman aşımı olan istemciyi, yavaş servisi bir sahtesiyle değiştirip süreyi küçülterek sına; test bir saniyenin altında bitsin ve yedek değerin döndüğünü doğrulasın.
- Yarış durumunu her seferinde yakalayan test: İki görevin aynı bakiyeyi güncellediği ve ara sıra bozulan kodu, görevlerin sırasını Event nesneleriyle yöneterek her çalıştırmada yeniden üret; sonra kilitle düzelt.
Kurs hakkında
asyncio'nun içini anlar; yapılandırılmış eşzamanlılık, geri basınç ve zarif kapanışla binlerce bağlantıyı kaldıran servisler yazarsın.
Ne öğreneceksin
- Olay döngüsünün içi
- Akışlar ve protokoller
- Dayanıklılık ve ölçüm
- Bitirme
Ön koşullar
Aynı yolun 301 düzeyine kadar olan konularını uygulamış olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde ve ona bağlı özel bir lab ağında geçer. Kurulum gerekmez.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 401 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.