Сельдерей: Как разрешить постановку в очередь «повторяющихся» задач, но запретить работу над «повторяющимися задачами»? - PullRequest
2 голосов
/ 04 августа 2020

Мы уже используем celery-singleton (аналогично celery-once ), чтобы запретить постановку в очередь повторяющиеся задачи, но теперь у нас есть случай, когда мы хотел бы разрешить постановку в очередь повторяющихся задач, но запретить работать над повторяющимися задачами одновременно.

Пример случая: У нас есть сообщение о задании {area_id: 42, item_id: 1}, над которым в настоящее время работают. По причинам, связанным с доменом c, мы хотели бы, чтобы одновременно выполнялась только одна задача для любого заданного area_id. Следующее сообщение в очереди задач - {area_id: 42, item_id: 2}. Мы бы хотели, чтобы эта вторая задача подождала, пока первая не будет успешно завершена. Задача для другого area_id, например {area_id: 23, item_id: 1}, должна быть разрешена для одновременного выполнения другим рабочим.

Существуют ли какие-либо плагины для Celery, похожие на celery-singleton / celery-once, которые sh легко позволит нам это сделать? Я спрашиваю, прежде чем пытаться реализовать это сам, если библиотека уже существует (что ускользнуло от моего поиска в Google).

...