Juliaはフォールトトレランスをどのように公開しますか - ノードがダウンしたとき(意図的にまたは間違っているとき)およびノード間の通信がダウンしたとき。分散型Juliaの弾性並列性とフォールトトレランス
私はそのような特徴のfew mentionsを見ましたが、正確にそれができる方法を見つけることができませんでした。
Juliaはフォールトトレランスをどのように公開しますか - ノードがダウンしたとき(意図的にまたは間違っているとき)およびノード間の通信がダウンしたとき。分散型Juliaの弾性並列性とフォールトトレランス
私はそのような特徴のfew mentionsを見ましたが、正確にそれができる方法を見つけることができませんでした。
pmapドキュメントストリングでは、これがすでにretry_
キーワード引数を使用して実装されていることがわかります。
pmap([::AbstractWorkerPool], f, c...; distributed=true, batch_size=1,
on_error=nothing, retry_n=0, retry_max_delay=DEFAULT_RETRY_MAX_DELAY,
retry_on=DEFAULT_RETRY_ON) -> collection
...すべてのエラーは コレクションの残りの部分を処理してからのpmapを停止します。この動作をオーバーライドするには、引数 を引数on_error経由で処理することを指定できます。この関数は、単一の 引数をとります。例外です。この関数は、 エラーを再実行して処理を停止するか、または続行するために、 の結果をインラインで呼び出し元に返す値を返します。
失敗計算は も引数がretry_onとして再試行するように通過さretry_on、retry_n、retry_max_delayを介して再試行され、nはそれぞれ をMAX_DELAYことができます。バッチ処理が指定され、バッチ全体が失敗すると、バッチ内のすべての アイテムが再試行されます。
@parallelマクロにはこのようなことはありません。しかし、Base.wrap_on_error
& Base.wrap_retry
関数を使用して、元の関数を拡張してエラーを処理することができます。実装の詳細の多くは、pmap
の定義をhttps://github.com/JuliaLang/julia/blob/v0.5.0/base/pmap.jlに見ると分かります。
基本的な戦略は、エラー(および潜在的にデータ)をキャッチして、同じワーカーを使用して再試行するか、同じワーカーを使用して再試行することです。おもう。
役に立つポインタをありがとう! – crackjack