Как заставить django-cron работать автоматически

Вопрос:Я пытаюсь заставить django-cron работать, а его нет. Я выполнил инструкцию здесь, чтобы настроить мой cron, но проблема в том, что моя работа выполняется только тогда, когда я набираю python manage.py runcrons в моей командной строке и работа не запускается каждые 5 минут. Я не знаю, что еще делать. Я прочитал другие документы на crontabs

Вопрос:

Я пытаюсь заставить django-cron работать, а его нет. Я выполнил инструкцию здесь, чтобы настроить мой cron, но проблема в том, что моя работа выполняется только тогда, когда я набираю python manage.py runcrons в моей командной строке и работа не запускается каждые 5 минут. Я не знаю, что еще делать. Я прочитал другие документы на crontabs и chronograph, но я смущен. Я устанавливаю crontabs вместе с cron или хронографом или cron работает нормально только с django-cron. Также как я могу запустить свою работу автоматически. В документации здесь я прочитал Now everytime you run the management command python manage.py runcrons all the crons will run if required. Depending on the application the management command can be called from the Unix crontab as often as required. Every 5 minutes usually works for most of my applications.. Что это значит. Что мне здесь не хватает. Я проиграл. HELP

Settings.py

CRON_CLASSES = ( «myapp.views.MyCronJob», ) INSTALLED_APPS = ( ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.sites’, ‘django.contrib.messages’, ‘django.contrib.staticfiles’, ‘django_cron’, ‘django.contrib.admin’, ‘django.contrib.admindocs’, ‘myapp’, )

views.py

from django_cron import CronJobBase, Schedule class MyCronJob(CronJobBase): RUN_EVERY_MINS = 10 # every 10 min schedule = Schedule(run_every_mins=RUN_EVERY_MINS) code = ‘my_app.my_cron_job’ # a unique code def do(self): print «10 min Cron» theJob()

Я должен упомянуть, что я использую pycharm на платформе Windows для запуска django…

Ответ №1

Корень вашей проблемы приводит к операционной системе. Веб-сервер не такой деамон, который называет ваши кроны, он просто передает веб-запросы. Для вызова периодических задач в Windows вам необходимо использовать планировщик задач Windows:

Что такое версия cron для Windows?

Другой способ решить вашу проблему – начать дегуатор сельдерея в режиме извлечения сельдерея.

http://celeryproject.org/

http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html

Это сложнее, если у вас очень простое приложение, вам не нужно использовать сельдерей. Но есть много случаев, когда очереди являются лучшим решением.

Ответ №2

Установите django-crontab вместо этого.

pip install django-crontab

Измените параметры settings.py, чтобы включить django-crontab

INSTALLED_APPS = ( ‘django_crontab’, … ) CRONJOBS = [ (‘*/5 * * * *’, ‘myproject.cron.my_scheduled_job’) ]

создать файл cron.py в каталоге приложения

def my_scheduled_job(): #do something

запускайте это каждый раз, когда вы включаете или обновляете свое задание cron.

python manage.py crontab add

запустите локальный сервер, чтобы проверить ваш cron:

python manage.py runserver

И все готово!:)

Ответ №3

Вы можете выполнять программные действия runcrons, например:

from django.core.management import call_command call_command(‘runcrons’)

В качестве примера, я был помещен выше в строку wsgi.py

Оцените статью
Добавить комментарий