У меня есть рабочий процесс, который обрабатывает 1 сообщение RabbitMq одновременно. Прямо сейчас, как только рабочий выходит, супервизор перезапускает его (который обработает следующее сообщение).
Я хотел бы установить интервал X секунд, чтобы супервизор не перезапускался неумышленно, но он ждал определенное количество времени, прежде чем начать работу с другим работником.
Это возможно? Как?
источник
Мне нужен был простой способ запустить команду из контейнера докера, где нет cron. Вот что я использую:
startsecs = 0 гарантирует, что супервизор считает, что команда была успешно запущена, даже если она завершается через несколько секунд. В противном случае супервизор прекратит его перезапуск, думая, что это в цикле.
Вот что вы увидите в /root/date.ts с примером выше:
Настройте сон по своему вкусу и замените «date >> / root / test.ts» на все, что вам нужно.
Это решение также пригодится, если вам нужно запускать cronjob чаще, чем каждую минуту.
источник
а потом
1. вам нужно использовать
exec
команду, иначе она будет разветвляться на подпроцесс,sleep 60 && exec your command
и ваш прогресс будет выглядеть следующим образома затем, когда вы используете,
supervisorctl
чтобы остановить urApp, вы остановите прогресс 1818 и оставите 3872 прогресс сиротами2. Рекомендую изменить startsecs на 5 больше, чем Sleep Sec, а затем, когда вы запустите это приложение и проверите статус, он покажет вам, что он запускается.
в противном случае, если вы установите значение меньше секунд сна, при запуске приложения и проверке статуса вы получите статус выполнения, но он все еще находится в режиме ожидания cmd до реального выполнения
3. когда вы меняете файл конфигурации, вам нужно использовать команду reload или просто перезапустить супервизор, чтобы он заработал
источник