CELERY_ROUTES - как маршрутизировать на основе имени задачи

Я пытаюсь заставить 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"}

Но это, похоже, не работает. Есть идеи? Спасибо.

5
задан aclowes 20 October 2011 в 18:54
поделиться