Usando Cron/Python

Usando Cron/Python

Me preguntaba si mis trabajos crontab se escribieron correctamente. Espero ejecutarlos en un VPS y realmente no es posible monitorearlos. Sin más preámbulos aquí están mis trabajos cron:

# 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

También cambié el reloj de mi sistema para que sea la hora del este, ¿eso significa que las tareas cron se ejecutarán utilizando la zona horaria del este?

Respuesta1

No, cronno es un caparazón. Escribe un guión:

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

Hazlo ejecutable y luego apúntale una crontabentrada:

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

Luego, el script debería ejecutarse todos los lunes a viernes, a las 2:57 en (la idea de su máquina) la zona horaria local. Si configuró su sistema de correo correctamente, los resultados (si los hay) se le enviarán por correo.

Respuesta2

Tus trabajos cron no están escritos correctamente. Cada trabajo cron tiene su propio entorno, lo que significa que el cdcomando no influye en los siguientes trabajos cron.

En cuanto a los entornos virtuales, le sugiero que active manualmente el entorno virtual y luego lo ejecute which pythonusted mismo. Eso le dará un camino completo hacia un pythonsistema que siempre se ejecutará en ese entorno virtual. Deberías usar esta ruta de Python en tu cron.

El crontab final debería verse así:

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

En cuanto a finalizar el proceso más adelante, la solución más común a este problema es utilizar un archivo pid. Hay bibliotecas de Python para ayudarte a hacer esto. Esta respuestaes bastante exhaustivo sobre ese tema, pero en realidad no está relacionado con la pregunta de crontab.

información relacionada