Awesome Asyncio 《碉堡的Asyncio·中文版》Awesome-Asyncio-CN

转一篇关于Asyncio的资源帖。基本涵盖了基于Asyncio的Python生态,非常适合用Python编写高性能服务。可以和之前转的驹神的文章结合看。如果想让Python技能更上一层楼,强烈建议好好学习下这个资源列表!

Awesome-Asyncio-CN

Awesome-Asyncio-CN

Awesome-Asyncio-CN Github 网址

Python Asyncio 精选资源列表,囊括了网络框架,库,软件等资源

Awesome-asyncioTimo Furrer 发起并维护的 Python Asyncio 资源列表。本项目是其中文版,在这里,收集了大量的 Asyncio 的最棒、最新的资源,供大家探索 Python 异步编程世界。

Python 3.4 引入了 Asyncio 模块作为标准库,通过协程、多路 I/O 访问 Socket 和其他资源来编写单线程并发代码,并在网络客户端与服务器上运行。Asyncio 内置了对异步 I/O 的支持,其编程模型类似于消息循环,从 Asyncio 模块可以直接获取 EventLoop 引用,再把需要执行的协程放到 EventLoop 中执行,就实现了异步 I/O。Asyncio 是由 Python 之父 Guido 领导的项目,该项目被命名为 Tulip(郁金香)。

Asyncio 并不是新出现的黑科技,一些社区有名的第三库如 Twisted、gevent 早就推出了异步编程模型。不过,自从 2016 年 3 月,Python 3.4 推出以后,这两年来,Asyncio 变得越来越流行,并且特别受到 Python 社区追捧。

贡献代码

欢迎大家为列表贡献高质量的新资源,提交 PR 时请参照以下要求

  • 注明推荐理由
  • 确保项目相对活跃

Web框架

构建 Web 应用的库

  • aiohttp - 支持 Asyncio (PEP-3156) 的 HTTP 客户端/服务端网络库。
  • sanic - Python 3.5+ Web 服务器,主打速度与性能。
  • Quart - 支持 Asyncio 的 Web 微框架,使用与 Flask 相同的 API。
  • Kyoukai - 使用 Asyncio 编写的 Python3.5+ 完全异步 Web 框架。
  • cirrina - 基于 aiohttp 的异步 Web 框架。
  • autobahn - 支持 Asyncio 与 Twisted 的 WebSocket 及 WAMP,用于客户端与服务端。
  • websockets - Python 构建的 WebSocket 客户端/服务端的库,致力于简洁、正确地编写代码。
  • Tornado - 高性能 Web 框架以及异步网络库。
  • Japronto! - 基于 uvloop 和 picohttpparse 构建的实验性 HTTP 工具箱。

消息队列

使用消息队列执行应用的库

  • aioamqp - 使用 Asyncio 异步执行 AMQP。
  • aiozmq - 集成了 Asyncio (pep 3156) 的 ZeroMQ。
  • crossbar - Crossbar.io 是提供分布式和微服务应用的网络平台。

数据库驱动

数据库的驱动库

  • asyncpg - 快速访问 PostgreSQL 数据库客户端的异步驱动。
  • asyncpgsa - 提供 Sqlalchemy Core 支持的 Asyncpg。
  • aiopg - 访问 PostgreSQL 数据库的异步驱动。
  • aiomysql - 访问 MySQL 数据库的异步驱动。
  • aioodbc - 访问 ODBC 数据库的异步驱动。
  • motor - 访问 MongoDB 数据库的异步驱动。
  • aioredis - aio-libs 提供的异步 Redis 客户端 (PEP 3156)。
  • asyncio-redis - 访问 Redis 客户端 (PEP 3156)的异步驱动。
  • aiocouchdb - 基于 aiohttp (Asyncio) 构建的 CouchDB 客户端。
  • aioinflux - 基于 aiohttp 构建的 InfluxDB 客户端。
  • aioes - 兼容 elasticsearch 的 Asyncio 驱动。
  • peewee-async - 基于 peewee 和 aiopg 实现的 ORM。
  • GINO - 基于 SQLAlchemy Core 和 asyncpg 方言的轻量级 Python 异步 ORM。
  • aiocache - 支持多个后端 (Memory、Redis 和 Memcached) 的 Asyncio 缓存管理器。
  • aiomcache - 访问 Memcached 的 Asyncio(PEP 3156) 驱动库。

网络

网络通讯库

  • AsyncSSH - 提供执行 SSHv2 协议的异步客户端/服务端。
  • asks - 与 requests 接口相似的异步 HTTP 库。
  • aioftp - 基于 Asyncio 的 ftp 服务。
  • aiodns - 简单的 Asyncio DNS 服务解析器。
  • websockets 构建于 Asyncio 之上的异步 websockets 库。

测试

测试 Asyncio 应用程序的库

  • aiomock - 支持异步的 Python mock 库。
  • asynctest - 一个增强标准 unittest 包的测试库。
  • pytest-asyncio - 支持 Asyncio 的 Pytest 库。
  • aioresponses - 一个适用于 aiohttp 的模拟请求库。

备选事件循环

备选的 Asyncio 循环库

  • uvloop - 基于 libuv 实现的 Asyncio 事件循环库。
  • curio - 协程并发库。
  • trio - 人性化的,Pythonic 的异步 IO 库。

并行

并行异步编程的库

  • aioprocessing - 结合 multiprocessing 与 Asyncio 的进程库,支持 Python3.4+。
  • aiomultiprocess - 进一步提升异步性能的多进程库。

其他

未归类的优秀 Asnycio 库

  • aiofiles - 基于 Asyncio,支持文件异步操作。
  • aiodebug - 用于监控和测试 Asyncio 程序的微型库。
  • aiorun - 提供处理通用 Asyncio 样板,启动和关闭事件驱动的 run 函数。
  • aiozipkin - 使用 zipkin 的分布式 Asyncio 追踪测量仪。
  • faust - 纯 Python 的流处理库,用于处理流数据和事件。
  • paco - 协程驱动的异步编程的工具库 (Python3.4+)。

文献

关于 Asyncio 的文档、博客等文献

演讲

关于 Asyncio 的主题演讲

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

Java和Python的Web开发

在Java里面有一种服务端的软件组件技术,叫做Servlet,其实它的定位就是轻巧的小玩意,比如Java里面的applet也是类似的命名。Servlet能够动态...

32440
来自专栏小怪聊职场

HTTP|GET 和 POST 区别?网上多数答案都是错的!

356100
来自专栏北京马哥教育

setup.py即将下岗,PEP 518 说明继任者

28970
来自专栏蓝天

apache thrift的不足

thrift作为RPC优点明显,那些还在坚持使用消息排斥RPC的同学,都应当亲自接触体验一下。 

10710
来自专栏木宛城主

SharePoint 2010、2013多个域之间互信(Domain Trust)的设计与实施

在现实的业务场景中,有时为了更好的管理域用户和服务。我们往往会创建多个分散式的域,每个域的Administrator专注于维护特定域中的用户和资源,Admin...

28690
来自专栏Seebug漏洞平台

利用特殊协议加载本地文件, 绕过 HTML5 沙箱, 打开弹窗诸事

原文链接:https://www.brokenbrowser.com/abusing-of-protocols/ 原作者:Manuel Caballero 译:...

39780
来自专栏数据之美

flask 流式响应 RuntimeError: working outside of request context

1、问题 最近要实现这样一个功能:某个 cgi 处理会很耗时,需要把处理的结果实时的反馈给前端,而不能等到后台全完成了再咔一下全扔前端,那样的用户体验谁都没法接...

40370
来自专栏phodal

编辑-发布-开发分离:git作为NoSQL数据库

动态网页是下一个要解决的难题。我们从数据库中读取数据,再用动态去渲染出一个静态页面,并且缓存服务器来缓存这个页面。既然我们都可以用Varnish、Squid这样...

214100
来自专栏CSDN技术头条

缓存那些事

导语:在网络分层应用服务中,缓存的使用已比较普及,本文将结合作者实际工作经验总结,讲述在不同的场景下如何选择和使用适用的缓存框架,以达到提升服务质量,优化系统...

26570
来自专栏Java后端技术栈

为什么说Redis是单线程的?

近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据” ,复杂一点的会问到缓存雪崩、缓存穿透、缓存预热、缓...

16620

扫码关注云+社区

领取腾讯云代金券