2016-09-22 55 views
2

我正在開發使用dask.distributed的分佈式計算系統。我通過Executor.map函數向其提交的任務有時會失敗,而其他看似相同的任務會成功運行。如何找到爲什麼一個任務失敗dask分佈?

框架是否提供了診斷問題的方法?

更新 通過失敗我的意思是增加計數器提供的Bokeh web UI中失敗任務的計數器。完成任務的計數器也增加。由該Executor.map回報None運行

功能。它與數據庫通信,從表中檢索一些行,執行計算和更新值。

我得在地圖40000個多任務,所以它是一個有點乏味學習日誌。

+0

_fail_是什麼意思?任務永遠不會運行?該任務確實運行,但退出時有一個非零的退出代碼? –

回答

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 

但是發生了同樣的錯誤,其他的事情都可能出錯。例如,您的工作人員可能沒有與客戶端上的軟件相同的軟件,或者您的網絡可能不允許連接或實際網絡中發生的其他任何事情。爲了幫助診斷這些有幾個選項:

  1. 可以使用web interface來追蹤你的任務和工人
  2. 進度可以start IPython kernels在調度或工作人員給他們檢查直接
相關問題