Задачи маршрутизации Celery на неправильный рабочий сервер

Итак, у меня есть два рабочих сервера (celeryd), которые используют два виртуальных хоста на одном сервере rabbitmq. Я передаю переменную в свой файл messagecenter.py, чтобы указать, какой URL-адрес брокера следует использовать для публикации задачи. После отладки некоторое время я обнаружил, что как только сельдерей устанавливает соединение с URL-адресом брокера, он не отключается от предыдущего виртуального хоста и не подключается к новому. Я точно не знаю, как обмены и привязки работают в сельдерее. Так что любая помощь высоко ценится.

messagecenter.py/

from celery import Celery

MESSAGE_SETTINGS = {
    "WORKER1": "amqp://user1:pass1@server-name:5672/vhost1",
    "WORKER2": "amqp://user2:pass2@server-name:5672/vhost2"
}

class MessageCenter(object):
    def __init__(self, config):
        self._config = config
        self._celery = Celery()

    def produce_task(self, name, uuid, params):
        self._celery.conf.update(
            BROKER_URL = self._config[name])
        self._celery.send_task(uuid, params) 

И я передаю либо «WORKER1», либо «WORKER2» вместе с необходимыми параметрами для публикации задачи, то есть send_task. Я надеюсь, что есть способ правильно направить мою задачу на разные серверы. Любая помощь будет высоко оценена.


person user2216194    schedule 16.12.2013    source источник


Ответы (1)


Решение найдено здесь

Поэтому я изменил свой celeryconfig на рабочих серверах, включив в него два обмена (каждый со своим набором привязок и routing_keys). И затем я передал их в качестве параметров от моего производителя (т.е. send_task('task_name', [params], queue = 'myQueue', routing_key = 'myRoutingKey'))

просто для справки, вот как выглядит мой celeryconfig на одном из серверов:

BROKER_URL = "amqp://server_URL/cel_host"

CELERY_APP = 'proj.tasks'

CELERY_IMPORTS = ('proj.tasks', )

CELERY_ROUTES = {
        'proj.tasks.send_email': {
            'queue': 'email_tasks',
            'routing_key': 'email.import',
        },
}
person user2216194    schedule 17.12.2013