4

它不一定必须在 for 循环中,但您将如何处理数据,将扭曲的异步“睡眠”放在中间的数据列表中。本质上,我想完成这样的事情,这显然是行不通的。它直接通过循环运行,没有睡眠。deferLater 是否只需要在方法上使用?如果是这样,我将如何使用扭曲实现相同的结果,以便在每个数据库保存条目之间有一个“睡眠”?

 @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 回答