Я хочу использовать dask для обработки около 5000 пакетных задач, которые сохраняют свои результаты в реляционной базе данных, и после того, как все они будут завершены, я хочу запустить финальную задачу, которая запросит базу данных и сгенерирует файл результатов (который будет храниться в AWS. S3)
Так что это примерно так:
from dask import bag, delayed
batches = bag.from_sequence(my_batches())
results = batches.map(process_batch_and_store_results_in_database)
graph = delayed(read_database_and_store_bundled_result_into_s3)(results)
client = Client('the_scheduler:8786')
client.compute(graph)
И это работает, но: Ближе к концу обработки многие рабочие процессы простаивают, и я хотел бы иметь возможность отключить их (и сэкономить немного денег на AWS EC2), но если я это сделаю, планировщик «забудет» это эти задачи уже выполнены, и попробуйте запустить их снова на оставшихся рабочих процессах.
Я понимаю, что это на самом деле функция, а не ошибка, поскольку Dask пытается отслеживать все результаты перед запуском read_database_and_store_bundled_result_into_s3
, но: Есть ли способ, которым я могу сказать dask, чтобы он просто организовал график распределенной обработки и не беспокоился о государственное управление?