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,感谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.