Я пытаюсь заставить celery маршрутизировать задачи на основе имени задачи... в общем, у меня есть задачи с именами 'worker.some_name' и 'web.some_name', и я использую две разные очереди, называемые worker и web соответственно. Я бы хотел, чтобы все рабочие задачи попадали в рабочую очередь и наоборот. В настоящее время у меня есть большой словарь CELERY_ROUTES, например, такой:
CELERY_ROUTES = {
"web.some_name": {
"queue": "web"
},
"web.some_other_name": {
"queue": "web"
},
etc.... }
Но я бы хотел что-то более общее, например:
CELERY_ROUTES = (MyRouter(), )
class MyRouter(object):
def route_for_task(self, task, args=None, kwargs=None):
if task.split('.')[0] == "worker":
return {"queue": "worker"}
return {"queue": "web"}
Но это, похоже, не работает. Есть идеи? Спасибо.