Django - Ловите момент, когда Celery завершает выполнение задачи
Я выполняю несколько задач Celery и пытаюсь получить четкое представление о том, когда задача Celery была завершена, успешно или неудачно.
Я создал Backlog
модель:
class Backlog(models.Model):
""" Class designed to create backlogs. """
name = models.CharField(max_length=255, blank=True, null=True)
description = models.TextField(blank=True, null=True)
#Status
time = models.DateTimeField(blank=True, null=True)
has_succeeded = models.BooleanField(default=False)
Я создал Test task
в tasks.py
, чтобы посмотреть, смогу ли я получить результат:
@shared_task(name='Test task', bind=True)
def test_task(self):
task_id = self.request.id
result = test_task.AsyncResult(task_id)
print('Task started with id:', task_id)
add(2, 2)
print(result.state)
if result.state == 'SUCCESS':
print('Task completed successfully')
response = {
'state': result.state,
'status': str(result.info),
'date': result.date_done,
}
Backlog.objects.create(name=f'Success in task {task_id}', description=str(result.info), time=result.date_done,
has_succeeded=True)
elif result.state == 'FAILURE':
print('Task is still running or failed with status:', result.state)
response = {
'state': result.state,
'status': str(result.info),
'date': result.date_done,
}
Backlog.objects.create(name=f'Error in task {task_id}', description=str(result.info), time=result.date_done,
has_succeeded=False)
И я просто тестирую с помощью простой функции:
def add(x, y):
return x + y
Я получаю следующий отслеживание в рабочем:
[2023-02-01 18:47:02,580: WARNING/ForkPoolWorker-6] Task is still running or failed with status:
[2023-02-01 18:47:02,582: WARNING/ForkPoolWorker-6]
[2023-02-01 18:47:02,582: WARNING/ForkPoolWorker-6] STARTED
[2023-02-01 18:47:02,585: INFO/ForkPoolWorker-6] Task Test task[06f71596-3082-4012-8ea8-05a22d57ca89] succeeded in 0.0534969580003235s: None
Мне не удается поймать точный момент, когда состояние становится SUCCESS
, поскольку я получаю только состояние STARTED
.
Что я упускаю?