繁体   English   中英

异步在Tornado中如何工作?

[英]How does async work in Tornado?

Tornado文档中的所有示例都说明了如何使用Tornado异步发出更多HTTP请求。

http_client = httpclient.AsyncHTTPClient()
http_client.fetch("http://www.google.com/", handle_request)

虽然我想确保龙卷风不等待数据库的响应(获取沙发床的命令)再发送。

检查我的其他错误,以了解为什么要异步调用Couchbase。

据我所知,Couchbase驱动程序不是异步驱动程序,所以这将无法工作。 使数据库调用同步,并使其尽可能快地进行优化。

(吓人的)替代方法是使用cubbase的驱动程序,并使用gevent之类的补丁对其进行修补,以创建自己的异步驱动程序。 我不建议这样做。 如果您真的想走这条路,请看看这个家伙对Motor所做的事情-他使mongo驱动程序异步。

请参阅github上Tornado WikiStackOverflow上的类似问题 只需执行数据库调用同步即可。 如果您的数据库或对数据库/数据库驱动程序的调用是您的瓶颈,即使龙卷风没有被阻止,您的网站也不会更快。 当请求资源不受其他Web服务器或资源(对于文件I / O而言对您的网站的大多数部分而言都不重要)的其他Web服务器或资源控制时,进行异步调用可能会更有意义。

旧线程,但我可能应该提到沙发床支持twisted 请参阅Twisted API for Couchbase与Python Tornado不兼容,以及http://pythonhosted.org/couchbase/api/txcouchbase.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM