<@ULVA73B9P> which is best practice? - Fail-fast...
# ask-marvin
o
@Marvin which is best practice? - Fail-fast by completion time (earliest failure raises immediately) from prefect.futures import as_completed futs = [task.submit(i) for i in range(10)] for f in as_completed(futs): f.result() # raises as soon as a failing future completes - Resolve a collection (may block in traversal order, not completion order) from prefect.futures import resolve_futures_to_results futs = [task.submit(i) for i in range(10)] results = resolve_futures_to_results(futs) # raises when it reaches a failed future - Wait for all, then raise if any failed (no fail-fast) from prefect import futures futs = [task.submit(i) for i in range(10)] done, _ = futures.wait(futs) for f in done: f.result() # raises on the first failed future you iterate over
n
you shouldn't ever need to use
resolve_futures_to_results
, that's an internal util
this
Copy code
futs = [task.submit(i) for i in range(10)]
results = resolve_futures_to_results(futs)  # raises when it reaches a failed future
should be written like this
Copy code
results = my_task.map(range(10)).result()
👍 1