Encontrei o mesmo caso de uso enquanto trabalhava em um ambiente de serviços de micro do Docker. No meu caso, havia a possibilidade de que o Nginx começasse antes que sua configuração gerada dinamicamente estivesse em vigor.
No momento não há como permitir que o Supervisord reinicie o serviço infinitamente até que o processo tenha iniciado com sucesso.
No entanto, existe uma solução viável usando a opção startretries
. Com a opção startretries
, o Supervisord irá reiniciar o número de vezes dado ou até que o processo tenha iniciado com sucesso.
No meu caso de uso específico, o período de tempo para a condição de corrida foi menor que um segundo, então definir startretries=2
foi suficiente. No entanto, você pode configurá-lo para um valor muito maior, se necessário.
[program:test]
startretries=10