异步如何在Tornado中工作?

时间:2013-02-26 15:52:20

标签: python asynchronous tornado couchbase

Tornado文档中的所有示例都显示了我们如何使用Tornado异步进行更多HTTP请求。

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

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

检查my other bug以了解我为什么要对couchbase进行异步调用。

3 个答案:

答案 0 :(得分:3)

据我所知,Couchbase驱动程序是not an async driver所以这不行。使db调用同步并将其优化为尽可能快。

(可怕的)替代方案是使用couchbase的驱动程序并使用像gevent这样的东西来修补它以创建自己的异步驱动程序。我不建议这样做。如果你真的想沿着这条路走下去,看看这个人用Motor做了些什么 - 他让mongo驱动程序异步。

答案 1 :(得分:1)

请参阅Tornado wiki on github和此similar question on StackOverflow。只需将数据库调用同步即可。如果您的数据库或您对数据库/数据库驱动程序的调用是您的瓶颈,即使没有阻止龙卷风,您的网站也不会更快。在请求不受您控制的资源时,执行异步调用可能会更有意义,因为其他网络服务器或资源对您网站的大部分内容都不重要,例如文件I / O.

答案 2 :(得分:1)

相关问题