Como reiniciar o script python após um segundo de descida usando o UPSTART?

1

Estou executando meu script Python usando o recurso upstart do Ubuntu para que, se por qualquer motivo meu script Python morrer ou for morto, ele possa ser reiniciado automaticamente e tudo esteja funcionando bem -

Então eu decidi usar o recurso UPSTART do Ubuntu para reiniciar o script Python automaticamente.

Depois de criar o arquivo testing.conf como este em /etc/init/testing.conf -

start on runlevel [2345]
stop on runlevel [016]

chdir /tekooz
exec python testing.py
respawn

Corri abaixo do comando sudo para iniciá-lo e vejo esse processo sendo executado usando ps ax e meu script python também está funcionando bem.

root@bx13:/tekooz# sudo start testing
testing start/running, process 27794

Agora, se eu matar o PID do processo acima, ele será reiniciado automaticamente dentro de alguns milissegundos ou microssegundos.

Existe alguma possibilidade de reiniciar meu script python após 1 segundo se ele caiu ou foi morto? Não quero reiniciar imediatamente.

    
por arsenal 25.01.2014 / 20:35

1 resposta

3

Eu realmente não entendo porque você está usando o diretório raiz para este "teste", e eu realmente não acho que é isso que você quer fazer (você pode acabar quebrando seu sistema mal). Além disso, observe que, se você for root (o prompt # ), não precisará "sudo". Por favor, considere editar a questão para refletir o que você está tentando alcançar.

Vou repetir, por uma questão de completude:

  

Considere colocar o arquivo conf em ~/.config/upstart/ para que você não precise sudo: você usaria initctl start testing para iniciar o script, por exemplo. (Estou supondo que o seu arquivo conf não precisa de privilégios de root).

Ao ler o livro de receitas , ele diz que as estrofes pre-start , post-start e post-stop são reexecutados em um trabalho respawned. Isso significa que você pode fazer algo assim:

start on runlevel [2345]
stop on runlevel [016]

chdir /path/to/a/folder
respawn

exec python testing.py

post-stop script
  sleep 1
end script

Desta forma, haverá um atraso de 1 segundo antes que o script seja recuperado. (Você pode fazer o mesmo com a estrofe pre-start , dessa forma, a primeira chamada teria um atraso de 1 segundo, no entanto.)

    
por edwin 25.01.2014 / 21:03