(x-postado no StackOverflow)
Eu configurei o cron para executar o seguinte comando para o django-cron (django 1.10.5, python 3.5, anaconda 4.2.0) no ubuntu 16.04:
PATH=/user/project/projectname/website
* * * * * ./manage.py runcrons "app.crons.RunCronJob"
Aqui está minha árvore de arquivos, localizada diretamente abaixo do nível mais alto do site remoto ( /
):
|-- user
| |-- project
| | |-- projectname
| | | |-- website
| | | | |-- file.txt
| | | | |-- manage.py
| | | | |-- app (a django app)
| | | | | |-- crons.py
RunCronJob
é um cronjob em crons.py
que acrescenta uma linha a file.txt
under /website
. Quando eu digito no diretório /website
e faço manualmente ./manage.py runcrons "app.crons.RunCronJob"
, ele funciona muito bem. No entanto, quando o cronjob que eu configurei é executado, ele não acrescenta nada ao meu arquivo de texto. Verifiquei que a tarefa Cron está sendo executada a cada minuto com o serviço de correspondência grep cron /var/log/syslog
, mas os dados que recebi parecem não me informar nada sobre o motivo pelo qual não estão funcionando.
(Observação para python: eu adicionei os.chdir(os.path.dirname(sys.argv[0]))
ao topo do meu crons.py
para garantir que o arquivo de texto seja gravado no diretório correto , não importa onde o comando é executado. Por exemplo, executando website/manage.py runcrons "app.crons.RunCronJob"
de /projectname
is Trabalhando para mim também. Por esta razão, eu não suspeito que meu problema esteja relacionado ao django, a biblioteca do django-cron ou python.)
Eu tenho visto algumas outras respostas que discutem alguns problemas comuns com o cron e tentei o meu melhor para corrigir qualquer problema: meu crontab tem uma nova linha no final, eu configurei meu fuso horário (embora isso não deva afetar meu cronjob), pgrep cron
retorna um número, eu configurei as permissões para meu arquivo de texto , Reiniciei o cron muitas vezes, etc.
Embora eu também tenha tentado definir corretamente meus caminhos de ambiente, suspeito que alguma parte dele ainda esteja errada. Eu tentei várias coisas como adicionar /home
na frente de /user
, remover o ponto e / ou barra na frente de manage.py
e adicionar o caminho de arquivo absoluto na frente do meu comando, tudo sem sucesso.
Embora eu ache que meu suspeito está em como estou definindo meus caminhos, o erro ainda pode estar em outro lugar no meu projeto. Qual é a questão que estou negligenciando, ou como devo diagnosticar isso?