V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
jenlors
V2EX  ›  Python

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

  •  
  •   jenlors · 2021-03-15 14:57:19 +08:00 · 2306 次点击
    这是一个创建于 1136 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目地址: 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,感谢!

    4 条回复    2021-03-17 20:21:30 +08:00
    so1n
        1
    so1n  
       2021-03-16 09:20:07 +08:00 via Android
    async 难得看到 mysql 相关的库😭
    jenlors
        2
    jenlors  
    OP
       2021-03-16 09:35:39 +08:00
    是的,确实很少
    vegetableChick
        3
    vegetableChick  
       2021-03-16 10:27:07 +08:00
    牛啊牛啊
    zyb201314
        4
    zyb201314  
       2021-03-17 20:21:30 +08:00 via Android
    辛苦、支持! 加星收藏
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2871 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 00:24 · PVG 08:24 · LAX 17:24 · JFK 20:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.