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"

上記のリクエストでは、TwitterAPIに対してクエリされている2つの単語のセットがあります。ただし、上記の要求は同期して機能します。

私は次のように出力を取得します

Query1

Query2

テスト

テスト

しかし、私はとして出力したい

Query1

テスト

Query2

テスト

上記のコードを微調整して、私が意図していることを達成する方法はありますか?

4

2 に答える 2

1

これはトルネードをブロックします - シングルスレッド、シングルプロセスです。したがって、そうすることは非常に悪い考えです。

ただし、クエリ 1のコールバックでクエリ 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 に答える