在龙卷风框架中是否有办法同步设置回调。
例如
print word
self.twitter_request(path= "/search",
access_token=self.current_user["access_token"],
callback=self.test,q=word,rpp="100")
我的测试功能定义为
def test(self,response):
print "Test"
在上面的请求中,我有一组2个单词正在查询twitter api。但是,上述请求同步运行。
我输出为
查询1
QUERY2
测试
测试
但是我想输出
查询1
测试
QUERY2
测试
任何想法如何调整上面的代码来实现我打算做的事情?
答案 0 :(得分:1)
这会阻止龙卷风 - 它是单线程,单一进程。所以这样做是一个非常糟糕的主意。
但是,您可以简单地重构代码,以便在查询1 的回调中触发查询2 。
要做到这一点,不要使用嵌套回调使代码不易阅读,请查看tornado.gen
。
答案 1 :(得分:1)
如果您的目标是按顺序执行查询列表,那么您可以使用@gen.engine
方法来执行处理程序(http://www.tornadoweb.org/documentation/gen.html)。然后你将构建你的代码:
@gen.engine
def doit(self):
for word in LIST_OF_STUFF:
print word
response = yield gen.Task(self.twitter_request,
path= "/search",
access_token=self.current_user["access_token"],
q=word,rpp="100")
# do something with response.