CodeBlanks Logo Icon CodeBlanks

aiohttp.ClientSession

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

main.py
# 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

main.py
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

Soru
import aiohttp

async with ____() as session:
Cevap
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

İleri seviye bölümündeki tüm dersler