Использование Cron/Python

Использование Cron/Python

Мне было интересно, правильно ли написаны мои задания crontab. Я надеюсь запустить их на VPS, а мониторинг их на самом деле невозможен. Без лишних слов, вот мои задания 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

Кроме того, я изменил системные часы на восточное время. Означает ли это, что задания cron будут выполняться с использованием восточного часового пояса?

решение1

Нет, cronэто не оболочка. Написать скрипт:

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

Сделайте его исполняемым, а затем укажите crontabна него запись:

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

Скрипт должен запускаться каждый понедельник-пятницу в 2:57 по местному времени (по мнению вашего компьютера). Если вы правильно настроили свою почтовую систему, результаты (если таковые имеются) будут отправлены вам по почте.

решение2

Ваши задания cron написаны неправильно. Каждое задание cron получает свою собственную среду, что означает, что cdкоманда не имеет никакого отношения к следующим заданиям cron.

Что касается виртуальных сред, я предлагаю вам вручную активировать виртуальную среду, а затем запустить which pythonсебя. Это даст вам полный путь к , pythonкоторый всегда будет работать в этой виртуальной среде. Вы должны использовать этот путь python в вашем cron.

Окончательный файл crontab должен выглядеть примерно так:

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

Что касается последующего завершения процесса, наиболее распространенным решением этой проблемы является использование pidfile. Существуют библиотеки python, которые помогут вам сделать это. Этот ответдовольно подробно освещает эту тему, но на самом деле не имеет отношения к вопросу о crontab.

Связанный контент