Я надеюсь, что у вас будет возможность программно генерировать записи celerybeat и resync celerybeat при добавлении записей. Документы here state
По умолчанию записи берутся из параметра CELERYBEAT_SCHEDULE, но также могут использоваться пользовательские хранилища, например, сохранение записей в базе данных SQL.
Итак, я пытаюсь выяснить, какие классы мне нужно расширить, чтобы иметь возможность сделать это.
Я смотрел документы планировщика сельдерея и djcelery api docs, но документация о том, что некоторые из эти методы не существуют, поэтому нужно погрузиться в какой-то источник и просто надеялись, что кто-то может указать мне в правильном направлении.
Я предполагаю, что высокий уровень того, что я делаю, будет полезен... Как пользователь, я должен иметь возможность выбирать из предопределенного набора задач и предоставлять пользователю возможность выбрать какое-то пользовательское расписание для его выполнения, например, каждый день/неделю/месяц и в какой день и время.
Также это в 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')
Данные выглядят корректно в db, но когда демон работает, эта ошибка:
[2012-03-06 00: 23: 07,926: WARNING/Beat] Процесс Beat:
[2012-03-06 00: 23: 07,926: WARNING/Beat] Traceback (последний последний звонок):
[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: WARNING/Beat] self.run()
[2012-03-06 00: 23: 07,927: WARNING/Beat] Файл "/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/celery/beat.py", строка 464, в перспективе
[2012-03-06 00: 23: 07,927: WARNING/Beat] self.service.start(embedded_process = True)
[2012-03-06 00: 23: 07,927: WARNING/Beat] Файл "/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/celery/beat.py", строка 403, в начало
[2012-03-06 00: 23: 07,927: WARNING/Beat] interval = self.scheduler.tick()
[2012-03-06 00: 23: 07,927: WARNING/Beat] Файл "/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/celery/beat.py", строка 194, в тике
[2012-03-06 00: 23: 07,927: WARNING/Beat] next_time_to_run = self.maybe_due (запись, self.publisher)
[2012-03-06 00: 23: 07,927: WARNING/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 = entry.is_due()
[2012-03-06 00: 23: 07,928: WARNING/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: WARNING/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()