Как запустить cronjob с виртуальной средой Python? - PullRequest
1 голос
/ 26 апреля 2019

Обычно я запускаю SSH в свой экземпляр EC2 и запускаю:

source MYVENV/bin/activate

Как настроить cronjob для активации виртуальной среды? Мой сценарий Django требует переменных ENVIRONMENT, которые хранятся в ~ / .bash_profile

Я попытался выполнить следующие шаги, но безрезультатно

Cron и virtualenv

SHELL=/bin/bash
*/1 * * * * root source /home/ec2-user/MYVENV/activate && python /home/script.py

Это мои текущие настройки выше.

Я получаю следующую ошибку в журнале:

/ bin / bash: root: команда не найдена

Ответы [ 3 ]

2 голосов
/ 26 апреля 2019

вы можете просто запустить интерпретатор python из вашей среды, например

MYENV/bin/python script.py

чтобы узнать, что является каталогом для интерпретатора Python вашей среды, перейдите в виртуальную среду и запустите

which python

в вашем случае это должно стать

*/1 * * * * /home/ec2-user/MYVENV/python /home/script.py
1 голос
/ 26 апреля 2019

вы можете создать один скрипт bash-оболочки для выполнения вашего скрипта Django.Смотрите пример ниже.

#!/bin/bash -l       // this should pick up your ~/.bash_profile environment variables

cd /path to project dir/   // set it up if your project is not in python path

source /Users/<user>/.virtualenvs/dslab/bin/activate // this activates your environment 

python /home/script.py   // run your script
0 голосов
/ 27 июня 2019

создать скрипт оболочки например scripts.sh

#!/bin/bash
source /home/user/MYVENV/bin/activate
python /path/to/file/script.py

Тогда в cron положить

*/1 * * * * bash /path/to/shell/script/scripts.sh

Скрипт загрузит все переменные окружения и выполнит из питона в вашей среде

...