【发布时间】:2016-11-17 12:50:11
【问题描述】:
所以我遵循http://tavendo.com/blog/post/going-asynchronous-from-flask-to-twisted-klein/ 的指南来创建异步 Web 服务。
在我的代码中,我有一个函数可以像这样发送请求
def query(text):
resp = yield treq.get("http://api.Iwanttoquery")
content = yield treq.content(resp)
returnValue(content)
@inlineCallbacks
def caller():
output1 = yield query("one")
output2 = yield query("two")
由于对 api 的每个查询通常需要大约 3 秒,因此使用我当前的代码,结果会在 6 秒后返回。我想知道有没有办法同时发送两个查询,所以在 3 秒后我可以得到 output1 和 output2 的内容?谢谢。
【问题讨论】:
-
您可以使用线程或找到一种方法将查询合并到一个查询中
-
您的“问题”是您使用的是
inlineCallbacks,它(因为没有更好的词)就像同步代码一样。所以基本上output1必须先产生一个值,然后才能转到output2。
标签: python python-2.7 twisted klein-mvc