Txmongo lib와 함께 Twisted를 사용하고 있습니다. 다음 함수에서 5 초 후에 cancelTest()를 호출하려고합니다. 그러나 코드는 작동하지 않습니다. 어떻게 작동시킬 수 있습니까?일정 시간이 지난 후 콜백 함수를 호출하는 방법
from twisted.internet import task
def diverge(self, d):
if d == 'Wait':
self.flag = 1
# self.timeInit = time.time()
clock = task.Clock()
for ip in self.ips:
if self.factory.dictQueue.get(ip) is not None:
self.factory.dictQueue[ip].append(self)
else:
self.factory.dictQueue[ip] = deque([self])
# self.factory.dictQueue[ip].append(self)
log.msg("-----------------the queue after wait")
log.msg(self.factory.dictQueue)
###############################HERE, this does not work
self.dtime = task.deferLater(clock, 5, self.printData)
#############################
self.dtime.addCallback(self.cancelTest)
self.dtime.addErrback(log.err)
else:
self.cancelTimeOut()
d.addCallback(self.dispatch)
d.addErrback(log.err)
def sendBackIP(self):
self.ips.pop(0)
log.msg("the IPs: %s" % self.ips)
d = self.factory.service.checkResource(self.ips)
d.addCallback(self.diverge) ###invoke above function
log.msg("the result from checkResource: ")
log.msg()
Clock()은 IReactorTime의 결정적인 모의 구현이므로 clock.advance (5)가 호출되지 않으면 시계가 움직이지 않습니다. –