😊

【Python】aioh2 で HTTP/2 クライアントをつくる

2024/07/11に公開

aioh2 は h2 を asyncio に対応させたモジュールである。

client.py
import asyncio
import aioh2

async def example():
    client = await aioh2.open_connection('127.0.0.1', 8000)

    stream_id = await client.start_request([
        (':scheme', 'h2c'),
        (':authority', 'localhost'),
        (':method', 'GET'),
        (':path', '/'),
    ])

    await client.send_data(stream_id, b'world', end_stream=True)
    headers = await client.recv_response(stream_id)
    print('Response headers:', headers)

    resp = await client.read_stream(stream_id, -1)
    print('Response body:', resp)

    trailers = await client.recv_trailers(stream_id)
    print('Response trailers:', trailers)

    client.close_connection()

asyncio.run(example())

Discussion