😊
【Python】aioh2 で HTTP/2 クライアントをつくる
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