AIOHTTP¶
特徴¶
非同期HTTP通信するための Client / Server ツール
インストール¶
$ pip install aiohttp
Getting Started¶
Client¶
1import aiohttp
2import asyncio
3
4
5async def main():
6 # session 作成。非同期コンテキストマネージャ async with を使うと
7 # 処理終了時に session はクローズされる
8 async with aiohttp.ClientSession() as session:
9
10 # URL へアクセス。.get()時に読み込むのはヘッダー情報のみ
11 async with session.get("http://python.org") as response:
12 print(response.status)
13 print(response.headers["content-type"])
14
15 # body をテキストで非同期に読み込む
16 html = await response.text()
17 print(html[:15])
18
19
20asyncio.run(main())
# windows の場合、
# asyncio.run() の前に asyncio.set_event_loop_policy() をセット
# する必要があるかもしれません
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
asyncio.run(main())
Server¶
Misc¶
AIOHTTP を使う際によく使うツール¶
multidict : URLにパラメタを渡す時に使う。参照: URLリクエストにパラメータ を渡す
yarl :
ClientSession.get()
などの HTTPメソッドは、文字列URLもしくは yarl.URL インスタンスを引き取る
1from yarl import URL
2
3url = URL('https://connpass.com/')
4
5print(url / 'explore')
6print(url / 'search' % {'q': 'aiohttp'})
出力
https://connpass.com/explore
https://connpass.com/search?q=aiohttp