这是如此破碎,希望您对我充满怜悯:
reactor.callLater(0, myFunction, parameter1).addCallback(reactor.stop) reactor.run()
myFunction 返回延迟。
myFunction
我希望很清楚我想做什么:
我想在myFunction完成任务后立即停止反应堆。 到目前为止,我遇到的问题是:
AttributeError: DelayedCall instance has no attribute 'addCallback'。很公平!如何在myFunction那时开始的回调链中放置回调?
AttributeError: DelayedCall instance has no attribute 'addCallback'
exceptions.TypeError: stop() takes exactly 1 argument (2 given)
def stopReactor(result): gd.log.info( 'Result: %s' % result) gd.log.info( 'Stopping reactor immediatelly' ) reactor.stop()
并将代码更改为:
reactor.callLater(0, myFunction, parameter1).addCallback(stopReactor) reactor.run()
(由于callLater问题仍然无法使用,但stopReactor现在可以使用)
reactor.stop除了定义一个额外的函数外,真的没有其他方法可以调用吗?
IReactorTime.callLater和Deferred由混合在一起twisted.internet.task.deferLater。
IReactorTime.callLater
twisted.internet.task.deferLater
from twisted.internet import reactor, task d = task.deferLater(reactor, 0, myFunction, parameter1) d.addCallback(lambda ignored: reactor.stop()) reactor.run()