素晴らしいアシンシオ
素晴らしい Python asyncio フレームワーク、ライブラリ、ソフトウェア、リソースの厳選されたリスト。
Python 3.4 で標準ライブラリに導入された Python asyncio モジュールは、コルーチンを使用したシングルスレッドの同時コードの作成、ソケットやその他のリソースを介した I/O アクセスの多重化、ネットワーク クライアントとサーバー、およびその他の関連プリミティブの実行のためのインフラストラクチャを提供します。
Asyncio は実際には真新しいテクノロジーではありませんが、特に Python コミュニティーや 2014 年 3 月の Python 3.4 のリリースにより、数年前から非常にトレンドになっているようです。したがって、常に最新の状態を保つのは非常に困難です。最も素晴らしいパッケージが揃っています。これらの素晴らしいパッケージのいくつかをここで見つけてください。不足しているパッケージがある場合は、提案を含めて Issue または Pull Request を作成してください。
コンテンツ
- ウェブフレームワーク
- メッセージキュー
- データベースドライバー
- ネットワーキング
- グラフQL
- テスト
- 代替ループ
- その他
- 著書
- 会談
- asyncioの代替手段
ウェブフレームワーク
Web アプリケーションを構築するためのライブラリ。
- FastAPI - 型ヒントに基づいた非常に高性能な Python 3.6+ API フレームワーク。 Starlette と Pydantic によって提供されます。
- Django - 巨大なコミュニティとエコシステムを備えた、確立された高レベルの Python Web フレームワーク。
- Starlette - 高性能サービスを構築するための軽量の ASGI フレームワーク/ツールキット。
- aiohttp - asyncio の HTTP クライアント/サーバー (PEP-3156)。
- 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 - Crossbar.io は、分散型およびマイクロサービス アプリケーション用のネットワーキング プラットフォームです。
- asyncio-nats - NATS メッセージング システムのクライアント。
- aiokafka - Apache Kafka のクライアント。
データベースドライバー
データベースに接続するためのライブラリ。
- asyncpg - Python/asyncio 用の高速 PostgreSQL データベース クライアント ライブラリ。
- asyncpgsa - sqlalchemy コアをサポートする Asyncpg。
- aiopg - PostgreSQL データベースにアクセスするためのライブラリ。
- aiomysql - MySQL データベースにアクセスするためのライブラリ
- aioodbc - ODBC データベースにアクセスするためのライブラリ。
- Motor - MongoDB 用の非同期 Python ドライバー。
- redis-py - Redis Python クライアント (現在 aioreadis が含まれています)。
- aiocouchdb - aiohttp (asyncio) 上に構築された CouchDB クライアント。
- aioinflux - aiohttp 上に構築された InfluxDB クライアント。
- aioes - elasticsearch 用の Asyncio 互換ドライバー。
- peewee-async - peewee と aiopg に基づく ORM 実装。
- GINO - SQLAlchemy コアに基づいた、asyncpg 方言を備えた軽量の非同期 Python ORM です。
- Tortoise ORM - Django のような API と簡単な関係管理を備えたネイティブ マルチバックエンド ORM。
- データベース - SQLAlchemy コアの非同期データベース アクセス。PostgreSQL、MySQL、SQLite をサポートします。
- Prisma Client Python - Pydantic を利用し、スキーマ専用に調整された自動生成された完全にタイプ セーフな ORM - SQLite、PostgreSQL、MySQL、MongoDB、MariaDB などをサポートします。
- Piccolo - 優れた管理 GUI と ASGI ミドルウェアを備えた、非同期モードと同期モードで動作できる ORM / クエリ ビルダー。
- Beanie - モーターと Pydantic に基づいて構築された非同期 MongoDB ODM。
ネットワーキング
ネットワーク内で通信するためのライブラリ。
- AsyncSSH - SSHv2 プロトコルの非同期クライアントおよびサーバー実装を提供します。
- aiodns - asyncio 用のシンプルな DNS リゾルバー。
- aioping - ICMP (ping) プロトコルの高速非同期実装。
- httpx - リクエストと互換性のある API を備えた Python 3 用の非同期 HTTP クライアント。
グラフQL
GraphQL サーバーを構築するためのライブラリ。
- Ariadne - GraphQL サーバーを実装するためのスキーマファーストの Python ライブラリ。
- Tartiflette -
libgraphqlparser
上に構築されたスキーマファーストの Python 3.6+ GraphQL エンジン。 - Strawberry - Django、Flask、FastAPI/Starlette をサポートするコードファーストの Python 3 GraphQL サーバー。
テスト
asyncio ベースのアプリケーションをテストするためのライブラリ。
- aiomock - 非同期メソッドをサポートする Python モック ライブラリ。
- asynctest - テスト用の機能を備えた標準の Unittest パッケージを強化します。非同期ライブラリ
- pytest-asyncio - asyncio の Pytest サポート。
- aresponses - Asyncio http モック。リクエストに使用される応答ライブラリと同様です。
- aioresponses - Python aiohttp パッケージのモック/フェイク Web リクエストのヘルパー.
代替ループ
代替の非同期ループ実装。
- uvloop - libuv 上での asyncio イベント ループの超高速実装。
その他
その他の素晴らしい asyncio ライブラリ。
- aiochan - asyncio 上のチャネル、選択、マルチプロセッシングによる CSP スタイルの同時実行。
- aiocache - さまざまなバックエンドのキャッシュマネージャー。
- aiofiles - asyncio のファイルサポート。
- aiopath - asyncio の非同期
pathlib
。 - aiodebug - asyncio プログラムを監視およびテストするための小さなライブラリです。
- aiorun - 起動と正常なシャットダウンのための通常のボイラープレートをすべて処理する
run()
関数。 - aiosc - 軽量のオープン サウンド コントロールの実装。
- aioserial - pySerial のドロップイン代替品。
- aiozipkin - zipkin を使用した非同期のための分散トレース計測
- asgiref - ASGI から WSGI への統合のためのバックエンド ユーティリティ。sync_to_async および async_to_sync 関数ラッパーが含まれています。
- async_property - 非同期プロパティの Python デコレーター。
- ruia - asyncio に基づく非同期 Web スクレイピング マイクロフレームワーク。
- kubernetes_asyncio - Kubernetes の非同期クライアント ライブラリ。
- aiomisc -
asyncio
用のその他のユーティリティ。 - taskiq - 非同期分散タスク マネージャー (celery に似ていますが、非同期)。
著書
asyncio に関するドキュメント、ブログ投稿、その他の素晴らしい記事。
- 公式 asyncio ドキュメント - 非同期 I/O、イベント ループ、コルーチン、タスク。
- asyncio についての短くよく書かれた入門書 - ジェネレーター、コルーチン、ネイティブ コルーチン、および async/await。
- AsyncIO for the Working Python Developer - 基本的な例から URL フェッチまで、非同期プログラミングへの穏やかな入門書です。
- Python aiohttp のテスト制限 - python-aiohttp で 100 万リクエストを作成します。
- ASGI (Asynchronous Server Gateway Interface) - WSGI の精神的な後継者で、非同期対応の Python Web サーバー、フレームワーク、およびアプリケーション間の標準インターフェイスを提供することを目的としています。
- Asyncio の第一原則の紹介 - asyncio の内部動作についての、流行語ではない第一原則の紹介です。
- FastAPI と Pytest を使用した非同期 API の開発とテスト - このチュートリアルでは、テスト駆動開発 (TDD) を使用して FastAPI で非同期 API を開発およびテストする方法を説明します。
- asyncio を使用した Python の同時実行 - 同時プログラミングと最先端の asyncio ライブラリを使用して、遅い Python コードを高速化する方法を学びます。
会談
asyncio に関する素晴らしい講演の録音。
- 興味のあるトピック (Python Asyncio) |スクリーンキャスト |スライド - PyCon Brasil 2015 基調講演 (David Beazley)。
- Python 非同期 I/O ウォークスルー - 8 部構成のコード ウォークスルー (Philip Guo)。
- Python 3.5 の Async/await とそれが素晴らしい理由 - EuroPython 2016 (Yury Selivanov)。
- 非同期における恐怖と待機: コルーチンの夢の中心への野蛮な旅 |スクリーンキャスト - PyOhio 2016 基調講演 (David Beazley)。
- 完全な初心者のための非同期 Python |スライド - PyCon 2017 (Miguel Grinberg)。
- Python の Async および Await キーワードをわかりやすく解説 - JetBrains TV 2020 (Michael Kennedy)
asyncioの代替手段
Python での非同期プログラミングの代替アプローチは、 asyncio
との互換性をサポートしようとするものもありますが、まったく互換性のないものもあります。
- curio - コルーチン同時実行ライブラリ。
- Curio-Asyncio ブリッジ - 基本的な curio -> asyncio コルーチン ブリッジ。
- trio - 人間とヘビ人間のための Python の非同期 I/O.
- trio-asyncio - Trio の上に asyncio メインループを再実装します。
- AnyIO - trio または asyncio 上で動作する高レベルの非同期同時実行およびネットワーキング フレームワーク。