【发布时间】:2016-11-17 16:35:21
【问题描述】:
你好吗?
最近几天我遇到了这个麻烦,我似乎无法完全理解 tornado gen 库。
我有这段代码,例如:
@gen.coroutine
def get(self, build_id=None):
status_query = self.get_query_arguments("status")
limit_query = self.get_query_arguments("limit")
results = [self._dummy() for i in range(15)]
yield results
def _dummy(self):
http_client = tornado.httpclient.AsyncHTTPClient()
return http_client.fetch("https://www.google.com", headers=self.headers, validate_cert=False)
正如我所想,我的 15 个获取 google 的请求应该几乎同时触发。 “结果”列表应该是一个期货列表,然后,生成列表应该等待所有这些都完成。
这确实发生了,但发出这些请求大约需要 6 秒,而且随着我增加 for 循环的范围,它会逐渐增长。
他们不应该花大约相同的时间准备好吗?
我错过了什么吗?
非常感谢!
【问题讨论】:
-
如果您的请求不受 IO 限制,那么您不会看到太大变化。
-
你能再解释一下吗? :)