我正在使用dask.distributed
开发分布式计算系统。我使用Executor.map
函数提交给它的任务有时会失败,而其他任何看似相同的任务会成功运行。
框架是否提供了诊断问题的方法?
更新 失败的意思是指在调度程序提供的Bokeh Web UI中增加失败任务的计数器。完成任务的计数器也会增加。
Executor.map
运行的函数返回None
。它与数据库通信,从其表中检索某些行,执行计算和更新值。
我在地图上有超过40000个任务,因此研究日志有点乏味。
答案 0 :(得分:2)
如果任务失败,那么任何检索结果的尝试都会引发与工作人员相同的错误
In [1]: from distributed import Client
In [2]: c = Client()
In [3]: def div(x, y):
...: return x / y
...:
In [4]: future = c.submit(div, 1, 0)
In [5]: future.result()
<ipython-input-3-398a43a7781e> in div()
1 def div(x, y):
----> 2 return x / y
ZeroDivisionError: division by zero
然而,其他事情可能会出错。例如,您的工作人员可能没有与客户端上相同的软件,或者您的网络可能不允许连接通过,或者实际网络中发生的任何其他事情。为了帮助诊断这些,有几个选择: