Я использую supervisord какое-то время - выдающийся инструмент. Единственным вариантом использования, который я не смог выяснить, является то, как настраивать задания для перезапуска до тех пор, пока не будет выполнено условие, а затем прекратите перезапуск.Условный перезапуск процессов супервизора?
Пример: предположим, что у вас есть куча работы, например, масштабирование тысяч изображений или обслуживание миллионов запросов в очереди. Полезной моделью было бы запустить много рабочих параллельно с работой над этим отставанием. Вы могли бы создать надзорную работу, которая обеспечит 100 рабочих, и если кто-то из них потерпит крах, супервизор будет разворачивать замену, чтобы пул работников не сокращался.
Это здорово, пока работа не будет завершена. Возможно, когда отставание исчезнет, количество работников должно уменьшиться до 1 или 0. Супервизор будет продолжать увеличивать общее число до 100 процессов, даже если каждый новый процесс проверяет, есть ли работа, которая будет выполнена, не видит никого и закрывается очень быстро.
Есть ли способ для экземпляра процесса или семейства процессов связаться с supervisord, чтобы сказать, что поведение autoretsart больше не требуется? Еще лучше, есть ли способ масштабировать количество рабочих процессов вверх и вниз на основе некоторого условия (например, количество файлов в каталоге или?).
Я знаю, что это можно сделать, обновив файл supervisord.conf
и запустив supervisorctl reload
, но я бы предпочел что-то более декларативное и самоуправляемое, если такая вещь существует.