Python Twisted-停止延迟列表中的所有延迟
我在延迟列表中有一些任务,有时工作人员会抛出一些错误。如何停止延迟列表中的所有延迟?如果工人出了问题Python Twisted-停止延迟列表中的所有延迟,python,twisted,deferred,Python,Twisted,Deferred,我在延迟列表中有一些任务,有时工作人员会抛出一些错误。如何停止延迟列表中的所有延迟?如果工人出了问题 延期未运行操作。你不能阻止一个被推迟的人。您可以使用延迟。取消API来尝试停止与延迟相关的操作,但这是一种选择加入机制:操作必须显式启用取消或延迟。取消实际上不会停止操作 Python中的线程是不可中断的。因此,从deferToThread返回的Deferred不会选择取消机制。无法停止基础操作 您可以为辅助功能实现自己的中断机制。例如,您可以在主线程和辅助函数之间共享threading.Eve
延期未运行操作。你不能阻止一个被推迟的人。您可以使用
延迟。取消API来尝试停止与延迟
相关的操作,但这是一种选择加入机制:操作必须显式启用取消或延迟。取消实际上不会停止操作
Python中的线程是不可中断的。因此,从deferToThread
返回的Deferred
不会选择取消机制。无法停止基础操作
您可以为辅助功能实现自己的中断机制。例如,您可以在主线程和辅助函数之间共享threading.Event
实例。如果希望线程停止,请设置事件。在worker函数中,不时检查事件以查看是否已设置。如果是这样,就放弃这份工作
def worker(word):
#can throw Exception
return word.upper()
def worker_err(error):
#todo: stop all deffered in list
return 0
def processing(words):
workers_list = []
for word in words:
workers_list.append(threads.deferToThread(worker, words).addErrback(worker_err))
return defer.DeferredList(workers_list)
words = ['abc', 'test string', 'test']
d = processing(words)