Параллельное выполнение задач luigi

У меня есть приложение с несколькими задачами luigi (я не писал это приложение). Теперь я хочу представить еще одну задачу в середине процесса, которая будет отслеживать некоторые экземпляры AWS. После запуска эта задача должна выполняться до конца и выполняться параллельно с другими задачами. Вы можете увидеть картинку по ссылке для лучшего понимания. Ссылка на схему Я просмотрел документацию, но не нашел решения. Я новичок в Луиджи и, наверное, что-то пропустил.


person Dušan Jovanović    schedule 29.08.2019    source источник


Ответы (1)


Не думаю, что ты что-то пропустил. Я не думаю, что Луиджи подходит для этого случая. Тем не менее, вы могли бы сделать одну вещь: Задача 3 требовала только Задачи 2, Задача 4 требовала Задачи 2 вместо Задачи 3, а Задача 3 постоянно запускала некоторый код и отслеживала вывод Задачи 5, чтобы знать, когда она должна быть закрыта. Не самое красивое, но должно работать.

Однако есть несколько проблем, которые я могу предвидеть (поэтому, вероятно, он не поддерживается luigi). Если у вас достаточно запущенной Задачи 3, вы, возможно, никогда не завершите рабочий процесс, поскольку Задача 4 никогда не запускается. Вот почему это не рекомендуется, поскольку вы, по сути, создаете скрытые требования, о которых граф зависимостей не знает. Другая проблема заключается в том, что задача 3 может никогда не выполняться, пока вы не выполните все задачи 5, и в этом случае она бесполезна.

Одна последняя идея, которую я имею, заключается в том, что вместо того, чтобы иметь задачу 3 вообще, в конце задачи 2 или начале задачи 4 вы запускаете процесс на узле планировщика (используя просто luigi.Task вместо расширения, чтобы работа выполнялась на другой узел в кластере). Затем в конце Задачи 5 вы удаляете процесс. Однако есть некоторые другие крайние случаи, которые вам необходимо рассмотреть, чтобы убедиться, что процесс не выполняется слишком быстро или слишком долго.

Удачи!

person iHowell    schedule 02.09.2019