Celery обновляет данные в результирующем бэкенде только тогда, когда мы вызываем задачу дважды (Windows)
Я исследую celery с django, я заметил очень странную вещь, и я не смог найти никакого решения этого до сих пор.
Я использую следующую простую задачу.
@shared_task
def add(x, y):
return x + y
Я вызываю приведенную выше задачу celery из одного из моих представлений, основанных на классе, которое выглядит следующим образом.
class CallMe(View):
def get(self, request):
rr = add.delay(random.randint(1, 999), random.randint(1, 999))
return HttpResponse(f'hellllo world {rr}')
он сопоставлен со следующим url
path('', CallMe.as_view())
когда я обращаюсь к 127.0.0.1:8000, мне приходится нажимать дважды, чтобы увидеть любое обновление в журнале команды celery.
Я использую следующую команду для сельдерея
celery -A my_proj worker -l DEBUG --pool=solo
Я использую RabbitMQ в качестве брокера.
Мне нужно дважды зайти на 127.0.0.1:8000, чтобы увидеть какое-либо обновление (только при втором заходе) в журнале команд сельдерея. НО цветок сельдерея способен показать две задачи (даже журнал сельдерея показывает только одну) и он показывает успех для обеих задач с правильным результатом
ALSO django_celery_results_taskresult является только INSERTING той задачи, которая регистрируется в журнале команды celery. Другая задача даже не имеет записи в таблице django_celery_results_taskresult, хотя она отображается в цветке.
Я действительно в замешательстве, какова причина и решение?
следуя версии сельдерея
pip show celery
Name: celery
Version: 5.2.3
Summary: Distributed Task Queue.
Home-page: http://celeryproject.org