Tornado文档中的所有示例都显示了我们如何使用Tornado异步进行更多HTTP请求。
http_client = httpclient.AsyncHTTPClient()
http_client.fetch("http://www.google.com/", handle_request)
虽然我想确保我的龙卷风不等待数据库的响应(获取couchbase的命令)然后发送。
检查my other bug以了解我为什么要对couchbase进行异步调用。
答案 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)
旧线程,但我应该提到 couchbase支持twisted 。请参阅Twisted API for Couchbase not working with Python Tornado和http://pythonhosted.org/couchbase/api/txcouchbase.html