创建Python Twisted光纤的方法有很多种。例如,可以调用reactor.callWhenRunning(helloWorld)
。 <{1}}将在helloWorld()
返回时执行,光纤将停止执行。
如果执行helloWorld()
的一半我想停止光纤的执行而不影响其余光纤怎么办?我该怎么做?
如果执行在helloWorld()
本身,那么我可以简单地从方法返回。但是,如果该程序是10个嵌套调用怎么办呢?如何阻止光纤的执行继续?我想我可以让所有10个方法立即返回,但对于使用1000种方法的大型程序进行编码将非常困难。
我可以提出异常。除非调用堆栈中的某些方法(除了reactor)捕获异常,否则这将起作用。
我可以做以下事情。但是,这将在Twisted反应堆中添加大量待处理的helloWorld()
。
Deferred
还有其他解决方案吗?
注意:Python 2.6解决方案是理想的。
答案 0 :(得分:0)
解决方案是在cancel()
之前简单地调用yield
。代码不会在yield
之后继续执行。
d = defer.Deferred()
d.delay = reactor.callLater(sleepTime, d.callback, None)
d.cancel()
yield d
returnValue(None)