Можно ли использовать функцию «распределенной общей» очереди Celery без добавления каких-либо асинхронных c рабочих? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть бэкэнд с несколькими экземплярами, которым необходимо поддерживать состояние, подобное распределенной очереди задач, на основе 3 параметров / атрибутов (Org, Project, Target_ID).

Например, для следующих задач, помещаемых в очередь:

Org1-Proj1-Target-1
Org1-Proj1-Target-2
Org1-Proj1-Target-3
Org2-Proj1-Target-10
Org2-Proj2-Target-20

Очередь должна выглядеть так:

Org1-Proj1: [Target-1, Target-2, Target-3, ] 
Org2-Proj1: [Target-10, ]
Org2-Proj2: [Target-20, ]

У меня также есть API, доступный для удаления задачи из этого распределенную очередь и удалите запись из таблицы (чтобы отметить ее только один раз для всех вызовов). например: если я затем ПОЛУЧАЮ вызов API для обработки следующей задачи для Org2-Proj1, я должен вернуть «Target-10», и моя очередь теперь должна выглядеть так:

Org1-Proj1: [Target-1, Target-2, Target-3, ] 
Org2-Proj1: []
Org2-Proj2: [Target-20, ]

Другой вызов GET для обработки следующая задача для Org2-Proj1 возвращает пустой объект, а очередь остается прежней.

Я не могу сделать это в памяти, поэтому мне нужно полагаться на что-то вроде сельдерея или, может быть, это можно сделать в redis а также.

Я чувствую, что могу использовать сельдерей, не подключая рабочих, а просто удаляя из правильной очереди то, что я ПОЛУЧАЮ запрос на свой API. Это хороший вариант использования сельдерея? Как еще я могу решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...