Django-celery-beat рассылает спам по заданным задачам

Я использую django-celery-beat для некоторых почасовых/дневных задач. Однако странное поведение заставило меня не знать, что делать.

Я создаю задачу, используя этот фрагмент кода:

    periodic_task = apps.get_model('django_celery_beat', 'PeriodicTask')
    interval_schedule = apps.get_model('django_celery_beat', 'IntervalSchedule')

    schedule, _ = interval_schedule.objects.get_or_create(every=2, period='hours')

    periodic_task.objects.update_or_create(
        task=TASK,
        defaults={'name': '<task description>', 'interval': schedule},
    )

где TASK - строка, указывающая на эту задачу:

@app.task(ignore_result=True)
def task():
    <things to do>
    pass

В коде вы видите, что я использую интервал в 2 часа, и как только я запустил ритм с помощью celery -A [project-name] beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler, никакой ошибки не выскакивает (я не знаю, работает ли это на самом деле, 2 часа - это много времени). Однако, когда я меняю интервал на 1 час, он выдает следующее:

[2021-12-21 15:32:45,333: INFO/MainProcess] Task app.tasks.task[6c0343b0-faf1-4eae-a8e0-721c862120a9] succeeded in 0.0s: None
[2021-12-21 15:32:45,336: INFO/MainProcess] Scheduler: Sending due task <task description> (app.tasks.task)

и далее продолжается до бесконечности, остановить можно только с помощью Ctrl+C.

У меня установлен плагин RabbitMQ Management, и в пользовательском интерфейсе все выглядит нормально - нет очереди, ничего не распаковано и т.д. Есть идеи, что это может быть причиной?

Даже после очистки очереди это все равно происходит (с celery -A [project-name] purge).

Обновление, я нашел ответ здесь: https://github.com/celery/django-celery-beat/issues/95. Моя настройка TIME_ZONE была неправильной (все еще установлен UTC, а не мой фактический часовой пояс, Европа/Амстердам), так что я думаю, что именно здесь все испортилось.

Вернуться на верх