Asyncio

Awesome asyncio Awesome

>精心精选的Python异步框架,库,软件和资源清单.

Python asyncio 使用Python 3.4引入标准库的Java模块提供了用于使用协程编写单线程并发代码,通过套接字和其他资源对I / O进行多路访问,运行网络客户端和服务器以及其他相关原语的基础结构.

Asyncio并不是真正的崭新技术,但是自几年以来,它似乎一直处于非常流行的趋势-特别是在Python社区以及2014年3月发布的Python 3.4中. 因此,要使自己与最新的最棒的软件包保持同步是非常困难的. 在这里找到一些“很棒的”软件包,如果您缺少其中的一个,我们将为您提供 create an Issue or a Pull Request 与您的建议.


Web Frameworks

用于构建Web应用程序的库.

  • aiohttp -异步的Http客户端/服务器(PEP-3156).
  • sanic -编写速度更快的Python 3.5+网络服务器.
  • Quart -具有与Flask相同的API的asyncio网络微框架.
  • Vibora -受Flask启发的高性能Web框架.
  • cirrina -基于aiohttp的自以为是的异步Web框架.
  • autobahn -用于客户端和服务器的WebSocket和WAMP支持asyncio和Twisted.
  • websockets -一个库,用于在Python中构建WebSocket服务器和客户端,重点在于正确性和简单性.
  • Tornado -Performance Web框架和异步网络库.
  • Japronto! -基于uvloop和picohttpparser构建的实验性HTTP工具包.
  • Starlette -用于构建高性能服务的轻量级ASGI框架/工具包.
  • uvicorn -快如闪电的ASGI服务器.
  • FastAPI -基于类型提示的高性能Python 3.6+ API框架. 由Starlette和Pydantic提供支持.

Message Queues

使用消息队列实现应用程序的库.

  • aioamqp -使用asyncio实现AMQP.
  • pyzmq -ZeroMQ的Python绑定.
  • aiozmq -与ZeroMQ的替代性Asyncio集成.
  • crossbar -Crossbar.io是用于分布式和微服务应用程序的网络平台.
  • asyncio-nats -NATS邮件系统的客户端.
  • aiokafka -Apache Kafka的客户端.

Database Drivers

用于连接数据库的库.

  • asyncpg -适用于Python / asyncio的快速PostgreSQL数据库客户端库.
  • asyncpgsa -具有sqlalchemy核心支持的Asyncpg.
  • aiopg -用于访问PostgreSQL数据库的库.
  • aiomysql -用于访问MySQL数据库的库
  • aioodbc -用于访问ODBC数据库的库.
  • motor -MongoDB的异步Python驱动程序.
  • aioredis - aio-libs 客户重做(PEP 3156).
  • asyncio-redis -用于Python异步的Redis客户端(PEP 3156).
  • aiocouchdb -建立在aiohttp(asyncio)之上的CouchDB客户端.
  • aioinflux -在aiohttp之上构建的InfluxDB客户端.
  • aioes -用于Elasticsearch的Asyncio兼容驱动程序.
  • peewee-async -基于ORM的实现 peewee 和aiopg.
  • GINO -是基于的轻量级异步Python ORM SQLAlchemy 核心, asyncpg 方言.
  • Tortoise ORM -具有类似Django的API的本机多后端ORM和简单的关系管理.
  • Databases -对SQLAlchemy核心的异步数据库访问,并支持PostgreSQL,MySQL和SQLite.

Networking

在您的网络中进行通信的图书馆.

  • AsyncSSH -提供SSHv2协议的异步客户端和服务器实现.
  • aiodns -用于异步的简单DNS解析器
  • httpx -适用于Python 3的异步HTTP客户端 requests 兼容的API.

GraphQL

*用于构建GraphQL服务器的库.

  • Ariadne -Schema-first Python库,用于实现GraphQL服务器.
  • Tartiflette -在“ libgraphqlparser”之上构建的模式优先的Python 3.6+ GraphQL引擎.

Testing

*用于测试基于异步应用程序的库.

Alternative Loops

*异步循环的替代实现.

  • uvloop -在libuv上超快速实现asyncio事件循环.

Misc

*其他很棒的asyncio库.

  • aiocache -用于不同后端的缓存管理器.
  • aiofiles -对asyncio的文件支持.
  • aiodebug -一个用于监视和测试异步程序的小型库.
  • aiorun -一个run()函数,用于处理启动和正常关闭的所有常用样板.
  • aioserial -的替代品 pySerial.
  • aiozipkin -带有zipkin的asyncio的分布式跟踪工具
  • asgiref -从ASGI到WSGI集成的后端utils,包括sync_to_async和async_to_sync函数包装.
  • ruia -基于asyncio的异步网络抓取微框架.

Writings

有关asyncio的文档,博客文章和其他精彩文章.

Talks

*有关asyncio的精彩演讲的记录.

Alternatives to asyncio

用Python进行异步编程的替代方法,其中一些尝试支持与asyncio的某种兼容性,而另一些则根本不兼容.