Отказоустойчивость в графиках зависимостей Dask - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть небольшой кластер, на котором я развертываю граф dask, используя:

from dask.distributed import Client
...
client = Client(f'{scheduler_ip}:{scheduler_port}', set_as_default=False)
client.get(workflow, final_node)

Во время рабочего процесса у меня, конечно, есть куча задач, которые выполняются параллельно.Однако иногда возникает ошибка в модуле, в котором работает один рабочий.Как только этот модуль выходит из строя, он возвращается планировщику, а затем планировщик останавливает другие работы, выполняющиеся параллельно (даже если другие не зависят от этого).Это останавливает их в середине потока.

Есть ли в любом случае, чтобы позволить другим завершить, а затем потерпеть неудачу, вместо того, чтобы немедленно выключить их?

1 Ответ

0 голосов
/ 20 февраля 2019

Функция Client.get - это все или ничего.Вы, вероятно, должны посмотреть на интерфейс фьючерсов.Здесь вы запускаете много вычислений, которые зависят друг от друга.Те, которые могут закончить, закончат.

См. https://docs.dask.org/en/latest/futures.html

...