OSS探訪GitHubでログイン

asyncioでHTTP client・server・WebSocketを構築するPython framework

OSS規模スコア 298.1OSS健全度 100
スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
16,569
主要言語
Python
ライセンス
Apache-2.0 AND MIT
リポジトリ最終更新
2026/10/05
ページ内ナビ

概要

aiohttpはPythonのasyncio向けHTTP client/server frameworkです。ClientSessionによる非同期HTTP client、middlewareとroutingを持つWeb server、client/server両方のWebSocketを一つのpackageで提供します。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

ClientSessionで非同期HTTP requestとconnection reuseを扱う

aiohttp.ClientSessionをcontext managerとして使い、GET/POST等のrequest、response body、headerを非同期に処理できます。session単位でconnectionを再利用し、asyncio applicationの外部I/Oをevent loopへ統合できます。

出典:[2]

routing・middleware・WebSocketを備えたHTTP serverを構築する

aiohttp.web.Applicationとroute handlerからHTTP serverを作成でき、middlewareやpluggable routingを利用できます。WebSocketはclient/server両方を標準で扱えます。

出典:[2]

向いている用途

HTTP clientと軽量async serverを同じasyncio stackで揃えたいbackendに向く

外部APIへの多数の非同期request、WebSocket connection、軽量service endpointなどを同じasyncio ecosystemで実装したい場合に適します。

出典:[2]

導入前の確認

3.14.4はPython 3.10以上。request limitとparser修正をupgrade時に確認する

aiohttp 3.14.4はPython 3.10以上を要求し、package licenseはApache-2.0とvendored llhttpのMITを含みます。3.14.4ではform field数を制限するclient_max_fields追加やHTTP parserの安全性・安定性修正が入っているため、upload/form処理やparser依存の回帰testを行ってください。

出典:[3][4]

参考にした公式資料

  1. [1]aio-libs/aiohttp — GitHub repository(2026-10-06)
  2. [2]aiohttp 3.14.4 — README(2026-10-06)
  3. [3]aiohttp 3.14.4 — pyproject.toml(2026-10-06)
  4. [4]aiohttp 3.14.4 release(2026-10-06)
  5. [5]aiohttp license(2026-10-06)
編集部からの補足

clientとserverの両方をasyncioで揃えられる点が特徴です。大量requestではClientSessionをrequestごとに作らず再利用し、server側ではbody/form limitやtimeoutを明示して運用してください。

3ステップで試す

  1. 1

    aiohttp 3.14.4を導入する

    確認対象の安定版を固定して導入します。Python 3.10以上が必要です。

    python -m pip install "aiohttp==3.14.4"
  2. 2

    localhost用の最小Web serverを作る

    公式READMEのserver構成を最小化し、localhostだけで確認できるendpointを作ります。

    cat > aiohttp_demo.py <<'PY' from aiohttp import web async def hello(request): return web.Response(text='hello aiohttp') app = web.Application() app.add_routes([web.get('/', hello)]) web.run_app(app, host='127.0.0.1', port=8080) PY
  3. 3

    serverを起動してresponseを確認する

    serverを起動し、別端末からhello aiohttpが返ることを確認します。

    python aiohttp_demo.py # 別端末で: curl -fsS http://127.0.0.1:8080/
公式READMEで確認

成長

成長の推移 · 直近30日

16,569 Stars

推移データを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • aiohttp
  • async
  • asyncio
  • hacktoberfest
  • http
  • http-client
  • http-server
  • python
Stars
16,569
Forks
2,439
Watchers
215
Open Issues
221
Contributors
416
所有者種別
Organization
主要言語
Python
ライセンス
Apache-2.0 AND MIT
リポジトリ最終更新
2026/10/05

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?