Celery Beat Task зависает без ошибок
У меня есть приложение Django, и я использую Celery Beat для периодического запуска задачи. Если я вызываю задачу при запуске Celery, она выполняется без ошибок:
app/tasks.py
...
@task(name='task1')
def func():
# Some code
func.run()
...
Если я затем запускаю Celery celery -A project worker -l info
, задача выполняется без ошибок.
Проблема возникает, когда я пытаюсь запустить ту же задачу с помощью Celery Beat, представьте, что у меня есть следующее расписание:
app.conf.beat_schedule = {
'some_task': {
'task': 'task1',
'schedule': crontab(minute=30, hour='22')
}
}
Эта задача должна выполняться каждый день на 22:30
, и она выполняется, задача запускается, но затем зависает, ничего не регистрируя, я не могу понять корень проблемы, это не ошибка памяти, я уже проверил это, и задача работает нормально на моей локальной машине с помощью Celery Beat.
Я также пытался использовать Celery Beat Daemon, но задача продолжает зависать при каждом запуске. Я не могу понять, что происходит, есть какие-нибудь предложения?
Используйте декоратор app.task
или shared_task
для вашей задачи. Без экземпляра приложения celery beat не будет вызывать задачу с правильной сигнатурой задачи, которую сможет распознать приложение celery. Вы можете найти документацию о том, как написать базовую задачу здесь.