Проблема : В нашей компании есть SQL Сервер, который должен запускать кучу задач каждую ночь.
Пока все запланировано, скажем, Задача 1 начинается в 22:00, задача 2 - в 10:30 и т. д.
Но, к сожалению, не все задачи всегда выполняются в одно и то же время, поэтому иногда задачи перекрываются (что замедляет их выполнение и, следовательно, вызывает каскад перекрытий), или сервер какое-то время простаивает, потому что одна задача завершается раньше, а следующая запланирована на 20 минут позже.
Иногда задача застревает и ее нужно убить вручную. *
То, что мы ищем, - это программное обеспечение или решение, которое:
- ставит в очередь все задачи (чтобы минимизировать время простоя)
- проверяет, не вышла ли одна задача за установленное время предел, в пределах которого он должен был быть завершен
- позволяет нам поместить задачу во взаимозависимые группы, которые будут запускать следующую задачу только тогда, когда предыдущая была успешно выполнена.
Поскольку я не уверен, что понимаю, я пытаюсь построить пример:
Допустим, у нас есть 5 групп задач (от A до E), каждая из которых включает 3 задачи (от 1 до 3).
Итак, мы хотим запустить задачу A1, затем A2, затем A3, затем B1 и так далее. Начиная с A1 в определенное c время каждую ночь, при этом задачи начинаются сразу после завершения предыдущей.
Мы также хотим указать для каждой задачи индивидуально максимальное время, в течение которого она может выполняться. (например, 20 минут для A1, 10 минут для A2 и т. д.), если этот максимум достигнут, задача должна быть убита.
ТАКЖЕ, если одна задача была убита, последние задачи В ОДНОЙ ГРУППЕ должны не исполняться. Но, конечно, должна начаться следующая группа.
Итак, если B2 превысил отведенное время и, следовательно, был убит, B3 не должен запускаться, и следующей задачей должно быть C1.
Я полагаю что мы не единственные, у кого есть эта проблема, поэтому я предполагаю, что существуют решения / программное обеспечение / код, который решает эту проблему?
Заранее любезно благодарю вас за вашу помощь.