Python 异步在Tornado中是如何工作的?

Python 异步在Tornado中是如何工作的?,python,asynchronous,tornado,couchbase,Python,Asynchronous,Tornado,Couchbase,Tornado文档中的所有示例都说明了如何使用Tornado异步发出进一步的HTTP请求 http_client = httpclient.AsyncHTTPClient() http_client.fetch("http://www.google.com/", handle_request) 虽然我想确保我的tornado不会等待数据库的响应,但couchbase的get命令会发送下一个响应 检查以了解为什么我需要对couchbase进行异步调用。据我所知,couchbase驱动程序是这样的

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

http_client = httpclient.AsyncHTTPClient()
http_client.fetch("http://www.google.com/", handle_request)
虽然我想确保我的tornado不会等待数据库的响应,但couchbase的get命令会发送下一个响应


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

据我所知,couchbase驱动程序是这样的,所以这不起作用。使db调用同步,并将其优化为尽可能快


另一个可怕的选择是使用couchbase的驱动程序,并使用gevent之类的东西对其进行修补,以创建自己的异步驱动程序。我不建议这样做。如果你真的想走这条路,看看这家伙做了什么-他让mongo驱动程序异步。

据我所知,Couchbase驱动程序是这样的,所以这不起作用。使db调用同步,并将其优化为尽可能快


另一个可怕的选择是使用couchbase的驱动程序,并使用gevent之类的东西对其进行修补,以创建自己的异步驱动程序。我不建议这样做。如果你真的想走这条路,看看这家伙做了什么——他让mongo驱动程序异步。

看看和这个。只需执行数据库调用同步。如果您的数据库或对数据库/数据库驱动程序的调用是您的瓶颈,那么即使tornado未被阻止,您的网站也不会更快。当请求不受您控制的资源时,执行异步调用可能更为明智,因为其他Web服务器或资源对网站的大多数部分(如文件I/O)都不重要。

请参阅和。只需执行数据库调用同步。如果您的数据库或对数据库/数据库驱动程序的调用是您的瓶颈,那么即使tornado未被阻止,您的网站也不会更快。当请求不受您控制的资源时,执行异步调用可能更为明智,因为其他Web服务器或资源对您网站的大多数部分(如文件I/O)都不重要。

旧线程,但我可能应该提到couchbase支持twisted。请参阅和

旧线程,但我可能应该提到couchbase支持twisted。请参阅和

不是异步的,也不是等待响应的,是吗?所以这些例子应该告诉你你想要什么,是吗?都是一样的,问题是Torndao开始等待Couchbase的响应。不是异步的,也不是等待响应一样的事情吗?所以这些例子应该告诉你你想要什么,是吗?它们是一样的,问题是Torndao开始等待Couchbase的响应。为什么不建议这样做?因为这样很容易出错,而且每次Couchbase生成新版本的驱动程序时,您都必须重新执行所有操作。问题是在给定的机器上连续出现,我只能每秒同步向db发出500个呼叫,而异步扩展到5000+异步。Couchbase驱动程序效率低下,我对aysnc的计划是间接克服其效率低下的问题。对于所述场景,您有什么建议?我们也可以使用类似twisted的,我们不能吗?简短回答不。长篇回答你可以使用cyclone,但这会让你的生活更艰难,而不是更轻松。为什么你不推荐这个?因为它很容易出错,而且每次couchbase生产新版本的驱动程序时,你都必须重新做每件事。问题是在给定的机器上连续出现,我只能打500个电话每秒同步到db,而异步扩展到5000+异步。Couchbase驱动程序效率低下,我对aysnc的计划是间接克服其效率低下的问题。对于所述场景,你有什么建议?我们也可以使用类似twisted的东西,不是吗?简短回答不。长回答你可以使用cyclone,但这会让你的生活更困难,而不是更容易