asyncmy, 一个利用 cython 加速的 asyncio MySQL 驱动

2021-03-15 14:57:19 +08:00
 jenlors

项目地址: https://github.com/long2ice/asyncmy

asyncmy 是一个 asyncio 下的异步 MySQL 驱动,在同步 IO 下,已经有 mysqlclient 这样的用 C 写的驱动,也有 pymysql 这样的纯 Python 实现,而在异步 IO 下,似乎只有 aiomysql 这一个选择。而 aiomysql 的性能,以及 pymysql,都不是那么令人满意,而 mysqlclient 因为核心代码是用 C 写的,所以比较快。

于是在这样的情况下,有了 asyncmy 。

asyncmy 的代码参考了 pymysql 以及 aiomysql,核心协议部分使用 cython 重写以提升性能,并且将底层同步 IO 重写为异步 IO,其 API 兼容 aiomysql 。

另外 asyncmy 也实现了 MySQL 复制协议,其协议核心代码来自 python-mysql-replication,并将网络 IO 部分重写为异步 IO 。

仓库中的基准测试对 mysqlclient,pymysql,aiomysql,asyncmy 进行了性能测试,结果表明 asyncmy 在不同情况下都拥有不错的性能。

后续项目计划是进一步提升性能,以及完善项目文档。

最后希望各位不吝 star,感谢!

2621 次点击
所在节点    Python
4 条回复
so1n
2021-03-16 09:20:07 +08:00
async 难得看到 mysql 相关的库😭
jenlors
2021-03-16 09:35:39 +08:00
是的,确实很少
vegetableChick
2021-03-16 10:27:07 +08:00
牛啊牛啊
zyb201314
2021-03-17 20:21:30 +08:00
辛苦、支持! 加星收藏

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/761779

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX