1

Tornado 文档中的所有示例都展示了我们如何使用 Tornado 异步发出进一步的 HTTP 请求。

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

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

检查我的另一个错误以了解为什么我想要对 couchbase 进行异步调用。

4

3 回答 3

3

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

(可怕的)替代方法是使用 couchbase 的驱动程序并使用 gevent 之类的东西对其进行修补,以创建您自己的异步驱动程序。我不建议这样做。如果你真的想走这条路,看看这个人对Motor做了什么——他让 mongo 驱动程序异步。

于 2013-02-26T17:43:04.683 回答
1

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

于 2013-02-27T22:22:16.373 回答
1

旧线程,但我可能应该提到coouchbase 支持 twisted。请参阅Twisted API for Couchbase not working with Python Tornadohttp://pythonhosted.org/couchbase/api/txcouchbase.html

于 2015-07-17T15:53:26.170 回答