Capture erros em cronjobs python

2

Eu tenho um script python como um trabalho cron chamado assim

/path/to/python /path/to/myscript myparam

Quando ocorre um erro no script, o cronjob falha silenciosamente. Quando eu executo o mesmo comando na linha de comando, recebo um rastreamento de pilha. Como posso trazer meu script para gerar o rastreamento de pilha (ou gravá-lo em um arquivo) ao executar como um cron job? Eu já defini a variável MAILTO . Eu também tentei colocar

/path/to/python /path/to/myscript myparam 2>&1 >> /path/to/logfile

no crontab, mas o arquivo de log permanece vazio.

Atualização: A chamada sem redirecionamento de saída funciona agora. Não foi um problema com o script python, mas com um separador incorreto na configuração do crontab do MAILTO. Lembre-se: Use vírgulas e não coloque espaços após as vírgulas!

    
por chiborg 13.09.2011 / 14:05

2 respostas

3

Você usou a ordem errada.

  • 2>&1 significa que o erro padrão de redirecionamento para a saída padrão e tanto para o terminal
  • >> /path/to/logfile redireciona a saída padrão para o arquivo de log. Você não mencionou o erro padrão, então ele ainda vai para o terminal.

Tente isto:

/path/to/python /path/to/myscript myparam >> /path/to/logfile 2>&1

Certifique-se de que o usuário que executa este script tenha permissão de gravação no arquivo de log.

    
por 13.09.2011 / 14:53
0

Confira a solução semelhante trabalhada aqui link . Adicionar tratamento de exceções, registro, correio e stderr deve fornecer os dados desejados no traceback.

    
por 13.09.2011 / 14:57

Tags