У меня есть приложение Django, которое использует Celery для создания асинхронных задач.Некоторые из этих задач находятся в проекте Django, а другие - на удаленном работнике с собственной базой кода.
В настоящее время я использую пакет django-celery-results
для хранения результатов вызовов задач в базе данных Django, так что яможет легко запросить статус звонков, используя Django ORM.Это прекрасно работает, когда я называю свои «локальные» задачи, но, похоже, не работает, когда я вызываю удаленные задачи.
Например:
app.send_task("django.foo") # Return status SUCCESS and store result in DB
app.send_task("remote.bar") # Stuck in PENDING and never create result in DB
При чтении Celery Docs Я обнаружил, что задачи могут зависнуть в PENDING, если клиент и работник не используют одну и ту же настройку CELERY_RESULT_BACKEND
.В этом случае я не могу использовать django-db
бэкэнд на своем удаленном работнике, поскольку это не приложение Django.
Так что в этом случае ... Как мне сохранить результаты при выполнении удаленных вызовов в этомманера?
Обратите внимание, что в случае remote.bar
я подтверждаю, что удаленный работник получает сообщение и выполняет метод.Просто мой клиент (приложение Django) не получает ответ.