4

必ずしもforループ内にある必要はありませんが、twistedの非同期「スリープ」を途中に置いてデータのリストをどのように処理しますか。基本的に、私はこのようなことを達成したいと思いますが、それは明らかに機能しません。スリープなしでループを実行します。deferLaterはメソッドでのみ使用する必要がありますか?もしそうなら、すべてのDB保存エントリの間に「スリープ」があるようにツイストを使用して基本的に同じ結果を達成するにはどうすればよいですか?

 @defer.inlineCallbacks
 def queryDatabase(self, kwargs):

    #Just testing deferLater
    for x in xrange(10000):
        yield txmongo.my_db.test_collection.save({"something":x * time.time()},safe=True)
        d = deferLater(reactor, 5, lambda: none)
        print str(datetime.datetime.now()) + ' ==> ' + str(x)
4

1 に答える 1

3

失敗することはありません。問題を書き留めるだけで、答えが見つかります。これは私にとってはうまくいくようです:

@defer.inlineCallbacks
def query(self, kwargs):

    # insert some test data
    for x in xrange(10000):
        print str(datetime.datetime.now()) + '===>' + str(x)
        yield deferLater(reactor, 5, lambda: none)

@defer.inlineCallbacks
def makeRequest(self, kwargs):
    g = yield self.query(kwargs)
于 2012-10-12T02:30:21.770 に答える