このページの内容

Awesome asyncio

asyncioを扱う資料や関連プロジェクトをまとめたAwesomeリストです。

目次


Webフレームワーク

Webアプリケーションを構築するためのライブラリ。

  • FastAPI - 型ヒントに基づく非常に高性能なPython 3.6+ APIフレームワーク。StarletteとPydanticを利用。
  • Django - 大規模なコミュニティとエコシステムを持つ、実績ある高水準Python Webフレームワーク。
  • Starlette - 高性能サービスを構築するための軽量ASGIフレームワーク/ツールキット。
  • aiohttp - asyncio(PEP-3156)向けHTTPクライアント/サーバー。
  • sanic - 高速動作を目的に記述されたPython 3.5+ Webサーバー。
  • Quart - Flaskと同じAPIを持つasyncio Webマイクロフレームワーク。
  • autobahn - クライアントとサーバー向けにasyncioとTwistedをサポートするWebSocket/WAMP実装。
  • websockets - 正確性と単純さを重視した、PythonでWebSocketサーバーとクライアントを構築するライブラリ。
  • Tornado - 高性能なWebフレームワークおよび非同期ネットワークライブラリ。
  • uvicorn - 非常に高速なASGIサーバー。

メッセージキュー

メッセージキューを使うアプリケーションを実装するためのライブラリ。

  • aioamqp - asyncioを使ったAMQP実装。
  • pyzmq - ZeroMQのPythonバインディング。
  • aiozmq - ZeroMQとの代替Asyncio統合。
  • crossbar - 分散アプリケーションとマイクロサービス向けのネットワークプラットフォーム。
  • asyncio-nats - NATSメッセージングシステムのクライアント。
  • aiokafka - Apache Kafkaのクライアント。

データベースドライバー

データベースへ接続するためのライブラリ。

  • asyncpg - Python/asyncio向けの高速PostgreSQLデータベースクライアントライブラリ。
  • asyncpgsa - sqlalchemy coreに対応したAsyncpg。
  • aiopg - PostgreSQLデータベースへアクセスするライブラリ。
  • aiomysql - MySQLデータベースへアクセスするライブラリ。
  • aioodbc - ODBCデータベースへアクセスするライブラリ。
  • pymongo - 同期APIと非同期APIの両方を提供する公式MongoDB Pythonドライバー。
  • redis-py - Redis Pythonクライアント(現在はaioreadisを含む)。
  • aiocouchdb - aiohttp(asyncio)上に構築されたCouchDBクライアント。
  • aioinflux - aiohttp上に構築されたInfluxDBクライアント。
  • aioes - asyncio互換のelasticsearchドライバー。
  • peewee-async - peeweeとaiopgに基づくORM実装。
  • GINO - SQLAlchemy coreを基盤とし、asyncpg方言を備えた軽量な非同期Python ORM。
  • Tortoise ORM - Django風APIと扱いやすいリレーション管理を備えたネイティブな複数バックエンド対応ORM。
  • Databases - PostgreSQL、MySQL、SQLiteをサポートするSQLAlchemy core向け非同期データベースアクセス。
  • Prisma Client Python - Pydanticを利用し、スキーマ専用に調整される自動生成・完全型安全なORM。SQLite、PostgreSQL、MySQL、MongoDB、MariaDBなどに対応。
  • Piccolo - 非同期・同期の両モードで動作し、使いやすい管理GUIとASGIミドルウェアを備えたORM/クエリビルダー。
  • Beanie - pymongoPydantic上に構築された非同期MongoDB ODM。

ネットワーク

ネットワーク上で通信するためのライブラリ。

  • AsyncSSH - SSHv2プロトコルの非同期クライアントおよびサーバー実装。
  • aiodns - asyncio向けのシンプルなDNSリゾルバー。
  • aioping - ICMP(ping)プロトコルの高速asyncio実装。
  • httpx - requests互換APIを備えたPython 3向け非同期HTTPクライアント。

GraphQL

GraphQLサーバーを構築するためのライブラリ。

  • Ariadne - GraphQLサーバーを実装するためのスキーマファーストPythonライブラリ。
  • Tartiflette - libgraphqlparser上に構築されたスキーマファーストのPython 3.6+ GraphQLエンジン。
  • Strawberry - Django、Flask、FastAPI/Starletteに対応したコードファーストのPython 3 GraphQLサーバー。

テスト

asyncioベースのアプリケーションをテストするためのライブラリ。

  • aiomock - 非同期メソッドに対応するPythonモックライブラリ。
  • asynctest - asyncioライブラリのテスト機能で標準unittestパッケージを拡張。
  • pytest-asyncio - Pytestのasyncio対応。
  • aresponses - Asyncio HTTPモック。responsesライブラリに類似し、これはrequestsで使用される。
  • aioresponses - Python aiohttpパッケージでWebリクエストをモック/フェイクするためのヘルパー。

代替ループ

asyncioループの代替実装。

  • uvloop - libuv上に構築された非常に高速なasyncioイベントループ実装。

その他

その他の優れたasyncioライブラリ。

  • aiochan - asyncio上でチャネル、select、マルチプロセッシングを使うCSP形式の並行処理。
  • aiocache - 複数のバックエンドに対応するキャッシュマネージャー。
  • aiofiles - asyncio向けファイルサポート。
  • aiopath - asyncio向け非同期pathlib
  • aiodebug - asyncioプログラムの監視とテストを行う小さなライブラリ。
  • aiorun - 起動と正常終了に伴う一般的な定型処理をすべて扱うrun()関数。
  • aiosc - 軽量なOpen Sound Control実装。
  • aioserial - pySerialの差し替え可能な代替。
  • aiozipkin - zipkinを使ったasyncio向け分散トレーシング計装。
  • asgiref - ASGIとWSGIを統合するバックエンドユーティリティ。sync_to_asyncおよびasync_to_sync関数ラッパーを含む。
  • async_property - 非同期プロパティ用Pythonデコレーター。
  • ruia - asyncioベースの非同期Webスクレイピング用マイクロフレームワーク。
  • kubernetes_asyncio - Kubernetes向け非同期クライアントライブラリ。
  • aiomisc - asyncio向けの各種ユーティリティ。
  • taskiq - 非同期分散タスクマネージャー(celeryに似ているが非同期)。

読み物

asyncioに関するドキュメント、ブログ投稿、その他の優れた文章。

講演

asyncioに関する優れた講演の録画。

asyncioの代替

Pythonにおける非同期プログラミングの代替手法。一部はasyncioとの一定の互換性を目指しますが、まったく互換性のないものもあります。

  • curio - コルーチン並行処理ライブラリ。
  • trio - 人間と蛇の人々のためのPythonらしい非同期I/O。
    • trio-asyncio - Trio上でasyncioメインループを再実装。
  • AnyIO - trioまたはasyncioのどちらの上でも動作する高水準非同期並行処理・ネットワークフレームワーク。