Планирование регулярного мероприятия: альтернативы Cron / Cron (включая Celery) - PullRequest
10 голосов
/ 08 июня 2011

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

К сожалению, Интернет, похоже, там немного не согласен.

Позвольте мне немного подробнее рассказать о моей настройке. Во-первых, моя среда разработки находится в Windows, а моя производственная среда размещена на Webfaction (Linux). На Windows нет настоящих cron, верно? Также я использую Django ! А что предлагается для Джанго?

Сельдерей конечно! К сожалению, настройка Celery была для меня более или менее буквальным кошмаром - см. Сообщение об ошибке «Не удалось найти обработчики для регистратора« многопроцессорная обработка »с использованием Celery . И это только одна из проблем, которые у меня были с сельдереем. Другие включают ошибку сокета, и я единственный, кто получил эту проблему.

Не поймите меня неправильно, Сельдерей кажется ДЕЙСТВИТЕЛЬНО крутым. К сожалению, кажется, что отсутствует поддержка, и некоторые странные ограничения встроены в его предпочтительный бэкэнд, RabbitMQ . К сожалению, какой бы крутой ни была программа, если она не работает, она не работает!

Вот где я надеюсь, что все вы можете войти. Я хотел бы знать о cron или cron-эквиваленте, который можно настроить одинаково (желательно одинаково) как в среде Windows, так и в среде Linux.

(Я борюсь с сельдереем уже около двух недель, и, к сожалению, я думаю, что пришло время вбрасывать полотенце и бросать его, по крайней мере, сейчас.)

Ответы [ 4 ]

16 голосов
/ 15 января 2012

У меня возникла та же проблема, и я попытался решить ее с помощью сельдерея (слишком сложно) или cron (вне приложения) и в итоге нашел Advanced Python Scheduler . Он только начал использоваться, но он кажется достаточно зрелым и стабильным, имеет приличную документацию и использует несколько форматов планирования (например, стиль cron).

Из документации , запуск функции через определенный интервал.

from apscheduler.scheduler import Scheduler
sched = Scheduler()
sched.start()
def hello_world():
    print "hello world"
sched.add_interval_job(hello_world,seconds=10)

Это не блокировка, и я запускаю что-то довольно идентичное, просто импортируя модуль из моего urls.py. Надеюсь, это поможет.

12 голосов
/ 08 июня 2011

Простым, не относящимся к Celery, способом решения проблем было бы создание пользовательских команд django-admin для выполнения асинхронных или запланированных задач.

Затем в Windows вы используетеat команда для планирования этих задач.В Linux вы используете cron.

. Я бы также настоятельно рекомендовал отключить Windows, если это возможно, для среды разработки.Ваша жизнь будет намного лучше на Linux или даже Mac OSX.Например, переназначьте запасную или старую машину с Ubuntu или запустите Ubuntu на виртуальной машине в Windows.

0 голосов
/ 17 августа 2012

Хронограф Django - отличная альтернатива. Вам нужно только настроить один cron, а затем делать все в админке django. Вы можете планировать задачи / команды из управления django.

0 голосов
/ 10 июня 2012

https://github.com/andybak/django-cron

Инициируется одной задачей cron, но все планирование и конфигурация выполняются в Python.

...