У меня есть одно приложение django, которое позволяет пользователю создавать несколько разных блогов. Каждый блог должен собирать модельные данные (например, количество посещений, кликов и т. д.) ежечасно/ежедневно/еженедельно и т. д., а интервал сбора данных может различаться в зависимости от блога. Кроме того, в какой-то момент пользователи могут захотеть изменить частоту сбора данных, например. от еженедельного до ежедневного в пользовательском интерфейсе.
Глядя на Периодические задачи из официальной документации, кажется, что Мне пришлось бы «жестко закодировать» значения интервала в файле настроек, и я могу указать интервал только один раз, например.
from celery.schedules import crontab
CELERYBEAT_SCHEDULE = {
# Executes every Monday morning at 7:30 A.M
'add-every-monday-morning': {
'task': 'tasks.add',
'schedule': crontab(hour=7, minute=30, day_of_week=1),
'args': (16, 16),
},
}
Как мне это сделать, или сельдерей вообще может планировать несколько задач одного типа с разными интервалами И изменять значения через пользовательский интерфейс (через AJAX)?
django-celery
вы можете использоватьdjcelery.schedulers.DatabaseScheduler
, которые позволяют вам управлять вашими периодическими задачами в админке django. документы по сельдерею - person devxplorer   schedule 02.11.2016changing the frequency of data collection
круто. Я напишу эту функцию на github.com/rajasimon/beatserver. - person Raja Simon   schedule 02.11.2016django-celery-beat
, который, похоже, заменяетdjango-celery
(пожалуйста, дайте мне знать, если это дело не в этом). Проблема, с которой я сталкиваюсь прямо сейчас, заключается в том, что когда я добавляю новые PeriodicTasks, они не выполняются, пока я не перезапущу процесс битов (celery -A proj beat -l info -S django
). - person FatHippo   schedule 14.11.2016PeriodicTasks.changed()
, из документы - person devxplorer   schedule 14.11.2016