这个是我刚才刚刚想到的, 原理就是用一些独立的进程去做费时的数据库 *** 作, 这样你的主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来支持异步。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)