Szukam sposobu planowania zadań, w których zadanie zostanie uruchomione po zakończeniu kilku poprzednich zadań.Harmonogram zadań ze złożonymi zależnościami
Mam kilkaset procesów "kolekcjonerskich", które zbierają dane z różnych źródeł i zrzucają je do bazy danych. Po zakończeniu zbierania danych (od 1 sekundy do kilku minut) chcę od razu uruchomić szereg procesów "przetwarzania danych", aby przeanalizować i zrozumieć dane w bazie danych. Po zakończeniu tych czynności chcę rozpocząć ostatnie zadanie i wysłać do mnie e-mail z danymi podsumowania.
Aktualnie używam kolejki narzędzi Gearman i uruchamiam zadania przetwarzania danych w programach czasowych, gdy spodziewam się, że proces "zbieracza" został zakończony, ale oznacza to, że etap przetwarzania rozpoczyna się po 10 minutach, nawet jeśli proces kolektora skończył po 3 (lub, co gorsza, jeszcze nie skończył).
Idealnie byłoby móc określić określone reguły, takie jak "Rozpocznij proces X, gdy proces A i (B lub C) zakończone" lub "rozpocznij proces Y, gdy zakończy się 95% określonych procesów lub upłynęło 10 minut ".
Procesy i zależności należy utworzyć automatycznie, ponieważ za każdym razem będą uruchamiane z różnymi parametrami (tj. Nie wykonuję za każdym razem identycznych obliczeń).
Potrafię napisać coś w rodzaju szkieletu zależności grafów za pomocą kolejek i monitorów, ale wydaje mi się, że to coś, co musiało być już rozwiązane, i szukam każdego, kto użył czegoś podobnego do tego, co opisuję.
Mało prawdopodobne, że zostało to zrobione w PHP. – andho