Как программно генерировать записи celerybeat с помощью celery и Django

Я надеюсь, что смогу программно генерировать записи celerybeat и повторно синхронизировать celerybeat при добавлении записей. В документах здесь указано

По умолчанию записи берутся из настройки CELERYBEAT_SCHEDULE, но также можно использовать пользовательские хранилища, например, хранить записи в базе данных SQL.

Поэтому я пытаюсь выяснить, какие классы мне нужно расширить, чтобы иметь возможность сделать это.

Я просматривал документацию по планировщику сельдерея и документацию по API djcelery , но документации о том, что делают некоторые из этих методов, не существует, поэтому я собирался погрузиться в какой-то источник и был просто надеясь, что кто-то может указать мне в правильном направлении.

Я думаю, что высокий уровень того, что я делаю, был бы полезен... Как пользователь, я должен иметь возможность выбирать из предопределенного набора задач и предоставлять пользователю возможность выбрать какое-то собственное расписание. для его выполнения, например, каждый день/неделю/месяц и в какой день и время.

Также это есть в Django с djcelery.

ОБНОВЛЕНИЕ

Я вижу код администратора djcelery, но не понимаю, как эти данные сохраняются.В настоящее время у меня есть общее представление addTask, которое выглядит следующим образом:

def addTask(request):

intervalSchedule = IntervalSchedule.from_schedule(schedule(timedelta(seconds=10)))
intervalSchedule.save()
modelData = dict(
    name="dcTestPersist",
    task="technologytrackerapi.views.createRecord",
    schedule=intervalSchedule,
)
periodicTask = PeriodicTask(**modelData)
periodicTask.save()
return render_to_response('taskView.html')

Данные выглядят правильно в базе данных, но когда запускается демон, возникает эта ошибка:

[2012-03-06 00:23:07,926: WARNING/Beat] Такт процесса:
[2012-03-06 00:23:07,926: WARNING/Beat] Отслеживание (последний последний вызов):
[2012-03-06 00:23:07,926: WARNING/Beat] Файл "/usr/lib/python2.7/multiprocessing/process.py", строка 258, в _bootstrap
[2012-03-06 00:23:07,926: ПРЕДУПРЕЖДЕНИЕ/Beat] self.run()
[2012-03-06 00:23:07,927: ПРЕДУПРЕЖДЕНИЕ/Beat] Файл "/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/celery/beat.py" , строка 464, в работе
[2012-03-06 00:23:07,927: ПРЕДУПРЕЖДЕНИЕ/Beat] self.service.start(embedded_process=True)
[2012-03-06 00:23:07,927: ПРЕДУПРЕЖДЕНИЕ/Beat] Файл "/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/celery/beat.py" , строка 403, в начале
[2012-03-06 00:23:07,927: ПРЕДУПРЕЖДЕНИЕ/такт] interval = self.scheduler.tick()
[2012-03-06 00:23:07,927: ПРЕДУПРЕЖДЕНИЕ/Beat] Файл "/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/celery/beat.py" , строка 194, в тике
[2012-03-06 00:23:07,927: ПРЕДУПРЕЖДЕНИЕ/Beat] next_time_to_run = self.maybe_due(entry, self.publisher)
[2012-03-06 00:23:07,927: ПРЕДУПРЕЖДЕНИЕ/Beat] Файл "/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/celery/beat.py" , строка 170, в may_due
[2012-03-06 00:23:07,927: WARNING/Beat] is_due, next_time_to_run = запись.is_due()
[2012-03-06 00:23:07,928: ПРЕДУПРЕЖДЕНИЕ/Beat] Файл "/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/djcelery/schedulers.py" , строка 54, в is_due
[2012-03-06 00:23:07,928: ПРЕДУПРЕЖДЕНИЕ/Beat] return self.schedule.is_due(self.last_run_at)
[2012-03-06 00:23:07,928: WARNING/Beat] AttributeError: объект 'NoneType' не имеет атрибута 'is_due'

Я не уверен, почему мое расписание не использует значение по умолчанию is_due()

11
задан kaiz.net 4 October 2012 в 11:31
поделиться