нужна помощь, чтобы разобраться с django-сельдереем и брокером сообщений amqp - PullRequest
1 голос
/ 06 марта 2012

Я работаю в Django и установил django-сельдерей. Демон celery работает на моем локальном сервере и принимает / выполняет задачи.

Последний кусок для меня - создать задачу, которая отправляет сообщение брокеру AMPQ на другом сервере. Конфигурация посредника находится в моем файле settings.py, но я не знаю, как установить соединение с сервером AMPQ и создать сообщение (с заголовком и json-кодированной полезной нагрузкой.

И теперь я задался вопросом, нужно ли мне даже запускать сельдерей, чтобы просто отправить сообщение внешнему брокеру AMQP.

UPDATE:

Я использую Kombu для публикации в брокере AMQP, и, похоже, я могу успешно установить соединение с Publisher, используя правильный exchange, routing_key и exchange_type. Мое сообщение должно состоять из заголовка с тремя парами ключ: значение и полезной нагрузкой в ​​кодировке json. Мне неясно, как построить сообщение.

1 Ответ

1 голос
/ 07 марта 2012

Celery имеет клиент-серверную архитектуру.Клиентская сторона публикует сообщения для брокера, а серверная сторона принимает сообщения от брокера.

Вам не нужен запуск сельдерея для публикации сообщений.Для отправки сообщений брокеру просто настройте опцию BROKER_URL в файле конфигурации settings.py и вызовите методы delay / apply_async для ваших задач.Celery создаст и опубликует необходимые сообщения.

Но вам нужно запустить Celery worker (с помощью команды celeryd или celeryd_multi) на стороне сервера, чтобы получать сообщения от брокера.

...