Использование сельдерея / RabbitMQ (очереди), использующих API в цикле запросов / ответов Django - PullRequest
2 голосов
/ 25 марта 2011

Я работаю над продуктом, который требует сканирования API, вычисления и выдачи результатов. В настоящее время я использую Django в качестве продукта. Я подробно рассмотрел документацию по Celery и RabbitMQ и очередям в целом.

То, чего я хочу достичь, это: 1. Мониторинг / администрирование каждого API вызывается для разных поставщиков. 2. Несколько очередей с несколькими потребителями. 3. Перепланирование в реальном времени в очередях.

Основная проблема здесь заключается в том, что во всем нашем цикле основным трудоемким процессом являются запросы API, занимающие от 1 до 20 секунд. Это хорошая идея использовать сельдерей / RabbitMQ. Я не могу использовать очередь Кролика с подтверждением, чтобы сделать запрос API и ждать, пока он не закончится, в то время как другие ожидают в очередях, очереди без подтверждения не помогут, так как отслеживать неудавшиеся запросы и повторять их будет невозможно. Итак, как бы я использовал очереди, чтобы обойти эту проблему?

Секунда Для мониторинга я посмотрел на этот http://www.rabbitmq.com/management.html, плагин мониторинга n управления, но я не могу найти способ получить информацию об обработанных сообщениях в очереди, что очень важно в моем случае. Есть ли способ получить эту информацию для RabbitMQ.

Должен ли я использовать любую другую очередь, такую ​​как ActiveMQ или ZeroMQ, для улучшения подключаемых модулей мониторинга, особенно для получения информации об обработанных сообщениях из очереди.

1 Ответ

0 голосов
/ 11 апреля 2011

Я уже некоторое время пользуюсь Beanstalk с большим успехом.

Сервер: https://github.com/kr/beanstalkd
Клиентская библиотека: https://github.com/PeterScott/beanstalkc
Помощник Django: https://github.com/jonasvp/django-beanstalkd
Приложение администратора Django: https://github.com/humanfromearth/django-beanstalk

Я думаюBeanstalk имеет много вариантов, которые вы ищете.Например:
1. Вы можете установить TTR (время выполнения) на время, которое должно пройти задание, прежде чем оно будет возвращено в очередь
2. Если задание подходит к концу своего TTR, выможете «коснуться» его для сброса обратного отсчета TTR
3. Beanstalk отслеживает статистику на уровне сервера, канала и задания.Таким образом, вы можете видеть, сколько заданий активно, отложено, всего и т. Д.

RabbitMQ очень надежен, но имеет большой вес.Я обнаружил, что Beanstalk намного легче, гибче и проще в использовании.

...