Я пытаюсь запустить ежедневную задачу как часть моего веб-приложения Django, используя ритм сельдерея, который вызывает функцию с аргументом строки даты. Расписание ударов работает нормально и вызывает функцию в нужное время каждый день, но строка даты, введенная в функцию, всегда отстает на один день. Я предполагаю, что это из-за неправильной настройки часового пояса, но я думаю, что правильно настроил Django и сельдерей, поэтому не вижу, в чем проблема.
Соответствующие настройки в ./settings.py
:
TIME_ZONE = 'Europe/London'
USE_TZ = True
CELERY_ENABLE_UTC = False
CELERY_TIMEZONE = TIME_ZONE
Мой конфиг сельдерея в ./my_project/celery.py
:
from django.utils import timezone
from celery import Celery
from celery.schedules import crontab
app = Celery('my_project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
# Configure daily tasks
app.conf.beat_schedule = {
# Executes `my_task` every day at 10:00am
'do-my-task': {
'task': 'tasks.tasks.my_task',
'schedule': crontab(minute=0, hour=10),
'args': (timezone.now().strftime('%d/%m/%Y'), ),
},
}
Любые идеи, почему следует вводить неверную строку даты в качестве аргумента my_task
?