0

我使用 tornado 是因为它的简单性,并将它与 Pymongo 一起使用,所以因为我总是听说异步调用,为大量客户提供服务,然后,我在问,什么是真正的对数据库的异步调用,所以这段代码例如:

例如,假设用户有 4 个要搜索的区域的页面,那么结果将是 4 个结果。

A = calls the database to search for an element a.
B = calls the database to search for an element b.
C = calls the database to search for an element c.
D = calls the database to search for an element d.
then render a pages where a user will see the results (a,b,c,d)

所以,这将是服务器的杀手,因为他必须留下来等待所有 4 个请求完成,或者让它服务第一个结果,然后等待,即使数据库调用被阻塞,并在他加入所有结果的地方创建一个桶提供给客户?还是必须使用异步数据库库(如 Motor 或 Asyncmongo)完成 4 个操作的拆分?

4

1 回答 1

1

每次调用 PyMongo 都会阻塞 Tornado 的 IOLoop 并阻止进一步处理任何客户端 HTTP 请求,直到 PyMongo 方法完成。

http://api.mongodb.org/python/current/faq.html#does-pymongo-support-asynchronous-frameworks-like-gevent-tornado-or-twisted

于 2012-09-26T15:37:59.880 回答