Я пытаюсь выполнить команду управления Django от крона. Я использую virtualenv для хранения моего проекта поигравшим в песочнице.
Я видел примеры здесь и в другом месте что шоу рабочее управление управляет из virtualenv's как:
0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg
Однако даже при том, что системный журнал показывает запись, когда задача должна была запуститься, эта задача никогда на самом деле работает (файл журнала для сценария пуст). Если я выполняю строку вручную от оболочки, она работает как ожидалось.
Единственным путем я могу в настоящее время заставлять команду работать через крон, должен разбить команды и поместить их в немой сценарий обертки удара:
#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg
Править:
ars придумал рабочую комбинацию команд:
0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg
По крайней мере, в моем случае, вызывая активировать сценарий для virtualenv ничего не сделал. Это работает, таким образом, на с шоу.
Вы можете сделать это, используя python
в своей виртуальной среде:
/home/my/virtual/bin/python /home/my/project/manage.py command arg
РЕДАКТИРОВАТЬ: Если ваш django проекта нет в PYTHONPATH, тогда вам нужно будет переключиться в правильный каталог:
cd /home/my/project && /home/my/virtual/bin/python ...
Вы также можете попытаться зарегистрировать сбой из cron:
cd /home/my/project && /home/my/virtual/bin/python /home/my/project/manage.py > /tmp/cronlog.txt 2>&1
Еще одна вещь, которую нужно попробовать, - это сделать такое же изменение в вашем manage.py
сценарий на самом верху:
#!/home/my/virtual/bin/python