这太破碎了,我希望你对我很仁慈:
reactor.callLater(0, myFunction, parameter1).addCallback(reactor.stop)
reactor.run()
Run Code Online (Sandbox Code Playgroud)
myFunction 返回延迟.
我希望很清楚我想做什么:
myFunction.这就是我使用0作为延迟参数的原因.除了callLater之外没有别的办法吗?传递它的延迟为0看起来很有趣.myFunction完成任务后立即停止反应堆.到目前为止我遇到的问题:
AttributeError: DelayedCall instance has no attribute 'addCallback'.很公平!如何在回调链中放置一个回调myFunction呢?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()
Run Code Online (Sandbox Code Playgroud)
并将代码更改为:
reactor.callLater(0, myFunction, parameter1).addCallback(stopReactor)
reactor.run()
Run Code Online (Sandbox Code Playgroud)
(由于callLater问题仍无法正常工作,但stopReactor现在可以正常工作)
reactor.stop除了定义一个额外的函数之外,真的没有其他方法可以调用吗?
Jea*_*one 21
IReactorTime.callLater和Deferred混合在一起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()
Run Code Online (Sandbox Code Playgroud)