Usando Cron/Python

Usando Cron/Python

Eu queria saber se meus trabalhos do crontab foram escritos corretamente. Espero executá-los em um VPS e monitorá-los não é realmente possível. Sem mais delongas, aqui estão meus cron jobs:

# cd into directory at 2:57 AM 
57 2 * * 1-5 cd /folder_name

# activate the virtual environment
58 2 * * 1-5 . env/bin/activate

# run the main script
59 2 * * 1-5 python main.py

# at 5pm break the script (worried the most about this part)
0 16 * * 1-5 ^C

Além disso, mudei o relógio do sistema para o horário do leste. Isso significa que os cron jobs serão executados usando o fuso horário do leste?

Responder1

Não, cronnão é uma concha. Escreva um roteiro:

#!/bin/sh
cd /folder_name
. env/bin/activate
exec python main.py

Torne-o executável e aponte uma crontabentrada para ele:

57 2 * * 1-5 /path/to/script

O script deve ser executado todas as segundas a sextas-feiras, às 14h57 no fuso horário local (ideia da sua máquina). Se você configurou seu sistema de e-mail corretamente, os resultados (se houver) serão enviados para você.

Responder2

Seus cron jobs não foram gravados corretamente. Cada cron job obtém seu próprio ambiente, o que significa que o cdcomando não tem influência nos cronjobs seguintes.

No que diz respeito aos ambientes virtuais, sugiro que você ative manualmente o ambiente virtual e depois execute which pythonvocê mesmo. Isso lhe dará um caminho completo para um pythonprograma que sempre será executado nesse ambiente virtual. Você deve usar este caminho python em seu cron.

O crontab final deve ser parecido com isto:

0 3 * * 1-5 /full/path/to/virtualenv/python /full/path/to/main.py

No que diz respeito a encerrar o processo posteriormente, a solução mais comum para esse problema é usar um pidfile. Existem bibliotecas python para ajudá-lo a fazer isso. Esta respostaé bastante completo sobre esse assunto, mas não está realmente relacionado à questão do crontab.

informação relacionada