tornado怎么实现异步访问mysql

tornado怎么实现异步访问mysql,第1张

用tornado毕竟是可以做异步request的, 如果你的数据库真的很慢, 不如再开其他的tornado做block数据库 *** 作(你可以用tornado wsgi多线程/多进程形式部署, 也可以用django, flask等), 然后通过API的形式将数据库返回过来. 相当于用tornado给你的数据库 *** 作web化(写内部数据API)

这个是我刚才刚刚想到的, 原理就是用一些独立的进程去做费时的数据库 *** 作, 这样你的主web tornado进程就可以异步畅通, 增加吞吐量. 这样就不需要为各个数据库写驱动了.

如果数据库在不同的机器上, 那么可以考虑将这些独立的数据 *** 作tornado进程在数据库机器上部署. 使用wsgi多线程/多进程的好处是查询可以同时进行, 当然也可能卡死数据库. 使用tornado自己的单进程异步部署的时候, tornado还可以充当一个数据库 *** 作队列的作用.

tornado是一个异步web framework,说是异步,是因为tornado server与client的网络交互是异步的,底层基于io event loop。

但是如果client请求server处理的handler里面有一个阻塞的耗时 *** 作,那么整体的server性能就会下降。

比如: 访问一个耗时的网站请求 www.douban.com/search, 这个结果要在5秒后才返回值。

当我访问的话,肯定是要等5秒钟,这时候,要是有别的客户要连接的别的页面,不堵塞的页面,

你猜他能马上显示吗?不能的。。。 他也是要等当前这个5秒延迟过后,才能访问的。

幸运的是,tornado提供了一套异步机制,方便我们实现自己的异步 *** 作。

当handler处理需要进行其余的网络 *** 作的时候,tornado提供了一个AsyncHTTPClient来支持异步。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11811703.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存