У меня есть скрипт на python, который подключается к внешнему хосту, получает некоторые данные и заполняет базу данных Django данными. Сценарий python, который заполняет базу данных, использует эти строки для настройки среды django:
path = os.path.normpath(os.path.join(os.getcwd(), '..'))
sys.path.append(path)
from django.core.management import setup_environ
import settings
setup_environ(settings)
Затем у меня есть сценарий оболочки, который на самом деле запускает скрипт python:
export PYTHONPATH=$PYTHONPATH:/home/django/project_dir/
cd ~/project_dir/scripts/
~/virtualenv/bin/python my_script.py
А потом мой конфиг cron, который находится в /etc/cron.d/
0 1 * * * django ~/project_dir/scripts/my_script.sh > /var/log/django_cron.log
Обратите внимание, что у проекта django есть собственный пользователь и виртуальная среда.
Сценарий оболочки работает нормально, когда я вошел в систему как пользователь django. Но крон не побежит! Я не получаю ошибок в файле журнала. Я уверен, что это что-то очень простое, но я просто не вижу этого ...