dask.compute()中的重试不清楚

dask.compute()中的重试不清楚,dask,dask-delayed,Dask,Dask Delayed,根据文档,如果计算结果失败,允许的自动重试次数。 “result”是指每个单独的任务还是整个compute()调用 如果它涉及整个调用,如何在dask.delayed中为每个任务执行重试 另外,根据下面的代码,我不确定重试是否有效 导入dask 随机输入 @达斯克 def添加(x,y): 返回x+y @达斯克 def除法(总和i): n=random.randint(0,1) 结果=总和i/n 返回结果 任务=[] 对于范围(3)中的i: 求和i=加(i,i+1) 除以n=除以(和) tasks

根据文档,
如果计算结果失败,允许的自动重试次数。

“result”是指每个单独的任务还是整个compute()调用

如果它涉及整个调用,如何在dask.delayed中为每个任务执行重试

另外,根据下面的代码,我不确定重试是否有效

导入dask
随机输入
@达斯克
def添加(x,y):
返回x+y
@达斯克
def除法(总和i):
n=random.randint(0,1)
结果=总和i/n
返回结果
任务=[]
对于范围(3)中的i:
求和i=加(i,i+1)
除以n=除以(和)
tasks.append(divide\n)
dask.compute(*任务,重试次数=1000)

预期的输出是(1,3,5),实际的输出是零分错误。

如果有人感兴趣,我们使用@retry装饰器来完成任务,如下所示:

@dask.delayed
@重试(异常,重试次数=3次,延迟=5次)
def my_func():
通过
重试装饰程序:

从functools导入包装
def重试(异常,重试次数=4,延迟=3,退避=2,记录器=None):
"""
使用指数回退重试调用修饰函数。
Args:
异常:要检查的异常。可能是
要检查的例外情况。
尝试次数:放弃前尝试(不重试)的次数。
延迟:重试之间的初始延迟(秒)。
退避:退避乘数(例如,值2将使延迟加倍
每次重试)。
记录器:要使用的记录器。
"""
如果没有,请执行以下操作:
logger=logging.getLogger(_名称__)
def装饰重试(f):
@包装(f)
def f_重试(*args,**kwargs):
mtries,mdelay=尝试,延迟
当mtries>1时:
尝试:
返回f(*args,**kwargs)
例外情况除外,例如:
msg=f“{e},\n在{mdelay}秒内重试…”
记录器警告(msg)
睡眠(mdelay)
mtries-=1
mdelay*=退避
返回f(*args,**kwargs)
返回f#u retry#true decorator
返回deco_重试

澄清一下,这比Dasks内部重试机制更先进,在异常到达工作进程之前捕获异常?