【问题标题】:dask-distributed: how to cancel tasks submitted with fire_and_forget?dask-distributed:如何取消使用 fire_and_forget 提交的任务?
【发布时间】:2017-09-20 19:20:35
【问题描述】:

使用 fire_and_forget 提交任务图时,是否可以稍后(在新进程/客户端中)取消这些任务(例如通过键名)? 这是否也会取消所有相关的任务,还是这些也像“fire_and_forget”一样?

【问题讨论】:

    标签: dask dask-distributed


    【解决方案1】:

    是的,您可以使用键名创建一个新的未来

    from dask.distributed import Future
    
    future = Future(key_name, my_client)
    future.cancel()
    

    即使面对多个客户也强制取消似乎是合理的(fire-and-forget 被认为是它自己的客户)。在这里实现:https://github.com/dask/distributed/pull/1408。在 > 1.18.3 版本中,您将能够使用 force=True 关键字

    future.cancel(force=True)
    

    这将取消未来,即使其他客户希望这样做。

    【讨论】:

    • 谢谢。它有多容易...... :-) 我的问题的第二部分怎么样?如果我使用 fire_and_forget 提交了一个长 dsk,并且我取消了最终任务,那是否也会取消图表的其余部分?还是我需要单独取消每个任务?
    • 是否可以设计一个长时间运行的任务,一旦它开始执行我就可以取消它?我知道杀死 python 线程很困难,但我可以改为使用元数据或信号向任务发送消息以干净地关闭吗?
    猜你喜欢
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 2021-05-10
    相关资源
    最近更新 更多