Django период сельдерея c изменение интервала задач не обновляется в базе данных - PullRequest
0 голосов
/ 13 июля 2020

Я использую Django 2.2 и задачу Celery periodi c для создания задания cron, которое ранее было настроено на запуск с интервалом в 2 часа, например

@periodic_task(name='authentication.periodic_task.custom', run_every=timedelta(hours=2))

Теперь я изменил его на запуск каждый день в 14:00 вместо запуска каждые два часа, и обновленное расписание:

@periodic_task(
    name='authentication.periodic_task.custom',
    run_every=crontab(hour=2, minute=0)
)

Замените timedelta на crontab, но задача по-прежнему выполняется каждые 2 часа.

Когда я проверил Django администратора, у него есть список в таблице Periodic Tasks со следующими данными

введите описание изображения здесь

Почему изменение периода в коде не обновляется в базе данных?

Сельдерей настроен на запуск через супервизор

# Run app
celery -A app worker -l info

# Run celery beat
celery -A app beat -l debug

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Учитывая, что вы, похоже, используете периоды с поддержкой базы данных c Задачи, вам следует отредактировать правила выполнения задач в базе данных, как в примере .

Этот тип бэкэнда с сельдереем не использует декораторы задач для установки правил ритма, но вместо этого следует создавать модели баз данных, как описано в документации, вы также можете добавлять или редактировать правила выполнения задач из Django Admin

0 голосов
/ 13 июля 2020

Более вероятная причина - неправильный запуск.

Celery worker просто запускает задачи periodi c, но выполняет только задачи, которые уже находятся в очереди asyn c. Для этого вы можете запустить команду embed celery beat:

celery -A proj worker -B

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...