I have a simple (but large) task Graph in Dask. This is a code example
results = []
for params in SomeIterable:
a = dask.delayed(my_function)(**params)
b = dask.delayed(my_other_function)(a)
results.append(b)
dask.compute(**results)
Here SomeIterable
is a list of dict
, where each are arguments to my_function
. In each iteration b
depends on a
, so if the task that produces a
fails, b
can't be computed. But, each element of results
are independent, so I expect if one fails, the other can continue running. This does not happen in practice, if an element of results
fails, then the execution of the script ends.
EDIT:
This also happen when using the submit
(or map
) method of the client class dask.distributed.Client
, for example
futures = [client.submit(my_other_function_2, **params) for params in MyOtherIterable]
results = [ft.result() for ft in futures]
In the code above if one task fails when I try to gather a result, all code fails as in the docs