Django Celery превосходит отправку многочасовых заданий, но не ежедневных

Это действительно странная ситуация. Задачи, выполнение которых запланировано каждые несколько минут, каждый час в течение дня (например, "*/20 * * * *") отправляются в Celery (с записями в журнале Celery Beat), и Celery выполняет их. Задачи, которые должны выполняться один раз в день (например, "15 11 * * *"), не выполняются в назначенное время, и для них ничего не записывается в журнал Celery Beat.

Я проверил содержимое таблиц в базе данных, и все выглядит правильно, за исключением, конечно, того, что last_run_at равно null для задач, которые не отправляются.

# select * from django_celery_beat_periodictask where id=7;
 id |                     name                     |              task               | args | kwargs | queue | exchange | routing_key | expires | enabled | last_run_at | total_run_count |         date_changed          | description | crontab_id | interval_id | solar_id | one_off | start_time | priority | headers | clocked_id | expire_seconds
----+----------------------------------------------+---------------------------------+------+--------+-------+----------+-------------+---------+---------+-------------+-----------------+-------------------------------+-------------+------------+-------------+----------+---------+------------+----------+---------+------------+----------------
  7 | hub_builtin__dhmaintenance.tasks.rotate_logs | dhmaintenance.tasks.rotate_logs | []   | {}     |       |          |             |         | t       |             |               0 | 2025-09-25 04:39:20.172338+00 |             |          6 |             |          | f       |            |          | {}      |            |
# select * from django_celery_beat_crontabschedule where id=6;
 id | minute | hour | day_of_week | day_of_month | month_of_year | timezone
----+--------+------+-------------+--------------+---------------+----------
  6 | 30     | 0    | *           | *            | *             | UTC

Оказывается, проблема была в том, что я обновил django-celery-beat и не обновил также cron-descriptor (была версия 1.4.5). После обновления cron-descriptor до версии 2.0.6 проблема исчезла. Все задачи, включая те, которые выполняются раз в день, были отправлены в Celery в назначенное время.

pip install я не жаловался на это, потому что django-celery-beat требуется для cron-descriptor>=1.2.32, хотя это явно неуместно, учитывая то, что я испытал.

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