2013-07-15 4 views
3

мне нужно обновить индекс Solr по расписанию с помощью команды:Джанго сельдерея Планирование manage.py команды

(env)$ ./manage.py update_index 

Я просмотрел сельдерей документы и нашел информацию о планировании, но не был в состоянии найти способ запуска команды управления django по расписанию и внутри virtualenv. Будет ли это лучше работать на обычном cron? И если да, то как я могу запустить его внутри виртуального? У кого-нибудь есть опыт с этим?

Спасибо за помощь!

ответ

0

Чтобы периодически запускать свою команду из задания cron, просто оберните команду в сценарий bash, который загружает virtualenv. Например, вот что мы делаем для запуска manage.py команды:

django_cmd.sh:

#!/bin/bash 

cd /var/www/website/ 
source venv/bin/activate 
/var/www/website/manage.py $1 --settings=$2 

Crontab:

[email protected] 
SETTINGSMODULE=website.settings_prod 
5 * * * * /var/www/website/django_cmd.sh update_index $SETTINGSMODULE >> /dev/null 
0 10 * * * /var/www/website/django_cmd.sh update_accounts $SETTINGSMODULE 
+0

Я закончил тем, что сделал это так, потому что я не мог заставить ткань + сельдерей хорошо играть. Благодаря! – tzenderman

0

Я действительно нашел хороший способ сделать это, используя ткань + сельдерей, и я сейчас работаю над этим:

В app/tasks.py создайте функцию ткани с необходимыми командами manage.py, затем украсьте ее @periodic_task, добавьте ее в свой сельдерей s расписание, и должно быть хорошо идти.

UPDATE: Я не смог использовать Fabric + Celery, потому что использование ткани в модуле вызвало его распознавание как файл ткани, а вызовы сельдерея в файле не сработали.

Смежные вопросы