1

龙卷风框架中有没有办法同步设置回调。

例如

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

查询2

测试

测试

但是我想输出为

查询1

测试

查询2

测试

任何想法如何调整上述代码以实现我想要做的事情?

4

2 回答 2

1

这将阻止龙卷风 - 它是单线程、单进程。所以这样做是一个非常糟糕的主意。

但是,您可以简单地重构您的代码,以便在 Query 1的回调中触发Query 2

要做到这一点而不会使用嵌套回调降低代码的可读性,请查看tornado.gen.

于 2012-06-19T23:54:12.740 回答
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.
于 2012-06-20T14:15:03.380 回答