【发布时间】:2018-02-02 08:10:06
【问题描述】:
当我运行 dask.distributed worker 时,任务函数中抛出的任何异常都会传播到调度程序并终止整个作业。有没有办法优雅地失败任务,以便调度程序负责重试(可能在另一个工作人员身上)?
【问题讨论】:
标签: dask dask-distributed
当我运行 dask.distributed worker 时,任务函数中抛出的任何异常都会传播到调度程序并终止整个作业。有没有办法优雅地失败任务,以便调度程序负责重试(可能在另一个工作人员身上)?
【问题讨论】:
标签: dask dask-distributed
目前 Dask.distributed 调度程序将异常解释为任务的真实值。目前不支持自动重试(截至 2017 年 8 月)。然而,这经常被要求。在不久的将来看到这种变化,我不会感到惊讶。
同时,我们建议在您的任务中添加重试逻辑。
def f(*args, **kwargs):
for i in range(n_retries):
try:
# your code
# return result
except Exception:
pass
future = client.submit(f, *args, **kwargs)
【讨论】:
dask.distributed.Reschedule 异常,调度程序将尝试将其发送到其他地方。不过,这需要您的函数中的逻辑。