Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Twisted-停止延迟列表中的所有延迟_Python_Twisted_Deferred - Fatal编程技术网

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)