Планирование задач со сложными зависимостями

Я ищу способ планирования задач, при котором задача запускается после завершения нескольких предыдущих задач.

У меня есть несколько сотни процессов-сборщиков, которые собирают данные из различных источников и выгружают их в базу данных. Как только они закончат сбор (от 1 секунды до нескольких минут), я хочу немедленно запустить кучу процессов «обработки данных» для анализа и осмысления данных в базе данных. Когда все это будет завершено, я хочу запустить последнюю задачу и отправить мне электронное письмо со сводными данными.

В настоящее время я использую очередь Gearman и запускаю задачи обработки данных на таймерах, как только я ожидаю «сборщика». процессы должны быть завершены, но это означает, что этап обработки начинается через 10 минут, даже если процессы сборщика завершились через 3 (или, что еще хуже, еще не завершены).

В идеале я мог бы указать конкретные правила, например " запускать процесс X, когда процесс A и (B или C) завершен », или« запускать процесс Y, когда 95% указанных процессов завершены или прошло 10 минут ».

Процессы и зависимости должны создаваться автоматически, так как они будет запускаться каждый раз с разными параметрами (т. е. я не выполняю одинаковые вычисления каждый раз).

Я мог бы сам написать какую-то структуру зависимостей от графа, используя очереди и мониторы, но это похоже на то, что это должно быть уже решено, и я ищу тех, кто использовал некоторые вещь, как я описываю.

9
задан Crashthatch 26 July 2011 в 08:22
поделиться