Eu sugeriria o uso do supervisord. Na minha experiência, é mais amistoso e geralmente uma experiência mais suave do que o runit ou os veneráveis daemontools. O Upstart foi projetado para substituir o processo init
igualmente venerável, enquanto o supervisord é especificamente para gerenciar coisas como WSGI, FastCGI e similares. Também é bastante bem documentada .
Como ele é voltado para esses tipos de cenários, o supervisord fornece recursos para iniciar um número específico de processos, limites de nova tentativa, sinais personalizados e vários outros bits úteis (inclui até mesmo uma interface XML-RPC). para fazer interface com o DBus, mas isso é improvável no seu cenário.