我应该如何在for循环中使用deferLater

时间:2012-10-12 01:37:24

标签: twisted

它不一定必须在for循环中,但是如何处理数据列表中的扭曲异步“睡眠”的数据。从本质上讲,我想完成这样的事情,这显然是行不通的。它在循环中运行,没有睡眠。 deferLater是否只需要在方法上使用?如果是这样,我将如何使用twisted实现相同的结果,以便在每个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)

1 个答案:

答案 0 :(得分: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)