我正在开发一个分布式计算系统dask.distributed
。我通过以下方式提交给它的任务Executor.map
功能有时会失败,而其他看起来相同的功能却可以成功运行。
该框架是否提供了诊断问题的方法?
update我所说的失败是指增加 Bokeh Web UI 中由调度程序提供的失败任务的计数器。已完成任务的计数器也会增加。
运行的函数Executor.map
回报None
。它与数据库通信,从表中检索一些行,执行计算并更新值。
我map里有40000多个任务,所以研究日志有点乏味。
如果任务失败,则任何检索结果的尝试都会引发与工作线程上发生的相同错误
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
然而,其他事情也可能出错。例如,您的工作人员可能没有与客户端相同的软件,或者您的网络可能不允许连接通过,或者现实世界网络中发生的任何其他情况。为了帮助诊断这些问题,有几个选项:
- 您可以使用网页界面 http://distributed.readthedocs.io/en/latest/web.html跟踪任务和工作人员的进度
- You can 启动 IPython 内核 http://distributed.readthedocs.io/en/latest/ipython.html#launch-ipython-within-dask-workers在调度程序或工作人员中直接检查它们
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)