V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tornado Documentation
http://www.v2ex.com/tornado/
Tornado on GitHub
https://github.com/facebook/tornado/
Tornado Gists
http://tornadogists.org/
yxlwfds
V2EX  ›  Tornado

tornado 异步数据库问题 归纳与疑问?

  •  
  •   yxlwfds · 2013-03-02 20:12:37 +08:00 · 7095 次点击
    这是一个创建于 4313 天前的主题,其中的信息可能已经有所发展或是发生改变。
    喜欢TORNADO,关于异步数据库mysql有以下几种解决办法,为兼容异步和性能,希望大牛可以给喜欢TORNADO的新手们以建议:

    @js 兄:
    gevent+ pymysql(Cython之, 有个文件raise异常的地方需要改一下), gevent+umysql, eventlet+mysqldb(eventlet.db_pool)
    https://github.com/hongqn/umysqldb

    txMySQL 异步客户端
    https://github.com/hybridlogic/txMySQL

    Twisted's adbapi :
    有个kn cyclone框架"建立在twisted之上的cyclone比tornado强太多,而且在windows 平台上可以用iocp.而且从tornado迁移到cyclone太简单了,cyclone本来就是fork了tornado的代码换了底层"

    另外还有新找到一个:
    https://github.com/ovidiucp/pymysql-benchmarks,看样子效率不错,还不有测试,好像不是太完整,希望有人可以完善下。

    另外Tornado的下一个大版本规划有一些对堵塞操作的支持,可能是以多线程的方式,也可能用greenlet协程的方式,具体尚不明朗

    可能已经有大牛有了解决方法,可以发出来参考下吗,或者大家还有补充吗?
    3 条回复    1970-01-01 08:00:00 +08:00
    swulling
        1
    swulling  
       2013-03-02 20:43:33 +08:00
    小应用的话搞个线程池,阻塞的操作扔里面。
    小例子,忘了是从哪里copy来的
    https://gist.github.com/ninehills/4465999
    yxlwfds
        2
    yxlwfds  
    OP
       2013-03-02 22:14:14 +08:00
    写web,cms ,大流量 并发
    jjx
        3
    jjx  
       2013-03-03 22:50:04 +08:00   ❤️ 1
    tornado也不一定要用异步数据库的,用pyzmq将请求转移到另一个中间层,然后再那个层中可以写同步代码了。参考pyzmq的例子

    简单的使用gevent+ sqlalchemy+pycopg2 ,参考这个代码,代码完全是同步写法https://bitbucket.org/zzzeek/green_sqla
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2298 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:58 · PVG 23:58 · LAX 07:58 · JFK 10:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.