-
Добрый день. Ни как не могу запустить django-cron.
Подскажите кто работал с ним.
Скачал с http://code.google.com/p/django-cron/ крон, установил все как прописано в файле ридме.тхт. Но сам крон срабатывает только один раз-первый раз при инициализации, а дальше через определенный заданный интервал работать напрочь не хочет. Как я понял django-cron заменяет собой стандартный cron с linux'a. Но получается, что срабатывает он ровно один раз и толку от него как от крона вообще нет.
Что и как делал(все по мануалу):
1. Put 'django_cron' into your python path
2. Add 'django_cron' to INSTALLED_APPS in your settings.py file
3. Add the following code to the beginning of your urls.py file (just after the imports):
import django_cron
django_cron.autodiscover()
4. Create a file called 'cron.py' inside each installed app that you want to add a recurring job to. The app must be installed via the INSTALLED_APPS in your settings.py or the autodiscover will not find it.
Код cron.py
'my_email@gmail.com' - работающий ящик.from django.contrib.auth.models import User
from django_cron import cronScheduler, Job
class CheckMail(Job):
# run every 60 seconds (1 minute)
run_every = 60
def job(self):
# This will be executed every 1 minute
user=User.objects.get(id=1)
subject = "Test cron"
message = "This is test message for check how cron works."
user.email_user(subject, message, 'my_email@gmail.com')
cronScheduler.register(CheckMail) -
у автора есть предупреждение на счет mod_python. использую тестовый встроенный сервер джанги
-
Сron он не заменяет, он ему помогает ))
Т.е. стандартными средствами вашей операционной системы надо добавить новую задачу - crontab и так далее.
Задача может быть такой: раз в минуту дергать manage.py в вашем проекте.
Как только стандартный крон дернул ваш manage.py и запускается как раз django-cron. А в нем вы можете задать хоть десяток разных заданий. -
хмм... только сейчас заметил, что это другое приложение ))
я использую django-chronograph http://code.google.com/p/django-chronograph/
но, думаю, принцип работы одинаковый у обоих.
django-cron не устанавливал и, кстати, нигде не видел сравнения этих двух приложений.
Скажите, если приложение понравится.
Пример задания в стандартном кроне:
* * * * * /usr/local/bin/python /usr/local/project/manage.py cron #starts cron jobs from django-chronograph -
2 master
спасибо. так и догадывался про этот крон. а хотелось так чтобы он полностью все делал)
ваше приложение я тоже пробовал использовать, но без результата, так как не хотел использовать crontab. chronograph удобен что в админке можно легко изменять, добавлять. -
Интересно, почему все так активно не хотят использовать нормальный крон, а хотят заменить его чем-то другим, причём обязательно со словом "django"? Крон — это хороший и удобный инструмент, странно им не пользоваться.
-
http://larin.in/archives/100
Я использую этот метод -
2 Иван
да, стандартный крон хороший инструмент, и можно только им и обходиться.
вот пожалуй чтото в оправдание
2 Сергей.Even on systems where cron/shell access is available, it is preferable to
only have one actual cronjob and let django-cron do the rest, because that
does not only make deployment easier, but also leads to cleaner application
code.
да я видел когда гуглил -
Интересно, почему все так активно не хотят использовать нормальный кронМожет быть потому, что хочется иметь в приложении всё, что касается самого приложения.
А не держать в голове кучу вещей, связанных с настройкой приложения в других местах.
И если у меня, например, 10 заданий для крона, то при переезде на другой сервер мне придется все их вводить.
К тому же, например, в моем случае мне удобнее редактировать задания через админку. И здесь, кстати, задания может изменять не только один человек - администратор сервера, но и другие пользователи (у которых есть соответствующие права в админке) -
Идея, что всё на свете будет контролировать только ваше Джанго-приложение, вообще говоря не живучая. Крон — это только одно из мест, где это очевидно не работает. Поэтому если вы хотите простого деплоймента, то нужно пользоваться для этого отдельными средствами (dpkg, pip, fabric — их полно). Этот тот шаг, который вам всё равно придётся совершить, если вы собираетесь делать что-то размером больше, чем домашний проект. Поэтому думать, что можно будет крон, миграцию данных, заведение пользователей и установку всякого доп. софта запихнуть в рамки Джанго — это самообман.
Да, и джанговская админка — тоже хреновый инструмент для деплоймента :-).
-
Поэтому если вы хотите простого деплоймента, то нужно пользоваться для этого отдельными средствами (dpkg, pip, fabric — их полно)Да, вот до этого я еще не дорос. Даже и не слышал про такие ))
Буду изучать, спасибо за науку!
Как же много надо всего знать... А времени в сутках так мало. -
Как извращенный вариантик, если так хотите все запускать из django, может поможет что то вроде sleep в каком то маленьком скрипте, с него будет подаваться, что допустим раз в 5 минут дергать manage.py, а сам скриптик будет запускать например через тот же, который стартует запуск wsgi? Хотя это конечно извращение, и ничего лучше cron всеравно нету )))
P.S. А еще было бы неплохо, чтоб Django обзавелось app по варке кофе )
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.


