aiohttp.ClientSession
- Python kursu
- İleri seviye
- Ders 38/83
- 5 dk
aiohttp.ClientSession ile async HTTP öğrenirsin.
aiohttp.ClientSession
aiohttp.ClientSession, asenkron HTTP istekleri için kullanılan oturum sınıfıdır. Birden çok isteği aynı oturum üzerinde yaparak bağlantıları yeniden kullanırsın.
import asyncio
import aiohttp
async def main():
async with aiohttp.ClientSession() as session:
async with session.get("https://example.com") as resp:
print(await resp.text())Oturum, async with bloğuyla açılır ve bittiğinde otomatik kapanır. İstekler session.get, session.post gibi yöntemlerle yapılır.
async with bloğu
async with, asenktron bağlam yöneticisidir. Oturumun ve yanıtın güvenli biçimde açılıp kapanmasını sağlar. Blok çıkışında otomatik olarak __aexit__ çağrılır.
async with aiohttp.ClientSession() as session:
async with session.get(url) as resp:
body = await resp.text()İç içe iki async with kullanılır: dışta oturum, içte yanıt. Böylece yanıt gövdesi okunduktan sonra bağlantı serbest bırakılır.
Uygulama ClientSession ile asenktron istek
import asyncio ve import aiohttp ile başla. async def main() içinde async with aiohttp.ClientSession() as session: bloğu aç. İçinde async with session.get("https://example.com") as resp: ile isteği yap ve print(await resp.text()) ile gövdeyi yazdır. Son olarak asyncio.run(main()) çağrısı ekle.
Başlangıç kodu
# asyncio ve aiohttp modüllerini içe aktar
# async with ile bir oturum başlat (aiohttp.ClientSession)
# oturum üzerinde get ile bir istek yap
# yanıt gövdesini text ile oku ve yazdır
# asyncio.run ile main'i çalıştırÖrnek çözüm
import asyncio
import aiohttp
# Test için sahte oturum tanımla
class _S:
async def __aenter__(self): return self
async def __aexit__(self, *a): return False
def get(self, url): return self
async def text(self): return 'merhaba'
aiohttp.ClientSession = _S
async def main():
async with aiohttp.ClientSession() as session:
async with session.get('https://example.com') as resp:
print(await resp.text())
asyncio.run(main())Beklenen çıktı
merhaba
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 ClientSession çağrısını tamamla
import aiohttp
async with ____() as session:
import aiohttp
async with aiohttp.ClientSession() as session:
Açıklama: aiohttp.ClientSession() ile asenktron oturum açılır.
2 async with aiohttp.ClientSession() ne sağlar?
- Yanıtın önbelleğe alınmasını
- Oturumun otomatik kapanmasını Doğru cevap
- İsteğin iki kez yapılmasını
- Bağlantı noktasının değişmesini
Açıklama: async with blok çıkışında oturumu otomatik kapatır.
3 ClientSession kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
ClientSession |
Oturum açar |
async with |
Otomatik kapatır |
session.get |
GET isteği yapar |
await resp.text |
Gövde döndürür |