Использование RabbitMQ с Django для получения информации с внутренних серверов

2

Я пытался принять решение о своем студенческом проекте, прежде чем идти дальше. Основная идея - получить данные об использовании диска, активные пользовательские данные linux и т.д. С нескольких внутренних серверов и опубликовать их с помощью Django.

Прежде чем я пришел в RabbitMQ, я думал о разработке клиентского приложения для каждого Linux-сервера и получения этих данных через сокет. Но я хочу сделать этот студенческий проект простым. Кроме того, я не знаю, как трудно подключиться к сокету через Django.

Итак, я думал, что смогу решить свою проблему с помощью RabbitMQ без программирования сокетов. В принципе, я отправляю сообщение в очередь для кроликов. Затем получите все, что захотите, с сервера-потребителя.

На стороне Django клиент выберет один из внутренних серверов и нажмет кнопку "details". Затем я хочу показать эту информацию на веб-странице.

Я уже прочитал почти всю документацию о кроличнике, сельдерее и пике. Отправка сообщений всем внутренним серверам (клиентам) и вычисление информации, которую я хочу получить, это OKAY, но я не могу понять, как я могу поместить эти данные на веб-страницу с помощью Django?

Как бы вы поняли эту проблему, если бы вы были мной?

Спасибо.

Теги:
sockets

3 ответа

4
Лучший ответ

Я решил, что моя проблема своя. Решение - вызов RabbitMQ RPC. Вы можете выполнить свой код на удаленном сервере и получить результат процесса через запросы RPC. Подробности можно найти здесь.

http://www.rabbitmq.com/tutorials/tutorial-six-python.html

Спасибо вам, ребята.

0

Вам понадобятся следующие две программы:

  1. Продюсер, который заполнит очередь. Это программа, которая будет собирать различные сообщения, а затем отправлять их в очередь.

  2. Потребитель, который будет обрабатывать сообщения из очереди. Эта потребительская работа - читать сообщение и делать с ним что-то; так что он обрабатывается и удаляется из очереди. Функция, которую этот потребитель делает, полностью зависит от вас, но то, что вы хотите сделать в этом сценарии, - это запись информации из сообщения в модель базы данных; та же база данных, которая является частью вашего приложения django.

Когда производитель нажимает сообщения, а потребитель удаляет их из очереди, ваша база данных будет обновляться.

На стороне django процесс просто фильтрует эту базу данных и отображает записи для конкретной машины. Таким образом, django не должен знать, как записываются записи в базе данных - все, что делает django, - это выборка, фильтрация, отправка в шаблон и отображение представлений.

Вопрос заключается в том, как лучше всего (ну на самом деле, легко) заполнять базы данных. Вы можете сделать это традиционным способом, используя БД-API документации Python и написать свои собственные SQL-запросы; но так как сельдерей настолько хорошо интегрирован с django - вы можете использовать django ORM для выполнения этой работы для вас.

Надеюсь, это поможет вам двигаться в правильном направлении.

0

Похоже, вы уже проделали тяжелую работу (сельдерей, кролик и т.д.), Но не заметили основы Django. Пройдите опрос опросов и начните с django или многих других ресурсов в Интернете, и это будет довольно просто. В основном:

создайте модели (объекты, представленные в db), объявите представления настройки URL-адресов, чтобы передать данные из модели в шаблон веб-страницы, создайте шаблоны (или сделайте это с помощью клиентской среды и создайте ответ JSON)

EDIT: (после того, как вы уточнили вопрос) На самом деле я просто попал в ту же проблему. Ответ запускает другой процесс python, параллельный процессу Django (в том же virtualenv), в этом процессе вы можете настроить потребителя кроликов (используя pica, puka, kombu или что-то еще) и вызывать конкретные функции/методы Django, чтобы что-то сделать с помощью информация от rabbitmq. вы также можете просто называть задачи сельдерея оттуда для выполнения в контексте приложения Django.

например, procfile (просто иллюстрируя, вы можете запускать оба процесса многими другими способами):

web: python manage.py runserver
worker: python listen_from_servers.py

Обратите внимание, что вам нужно будет установить для DJANGO_SETTIGNS_MODULE переменную окружения файла настроек для импорта django.

  • 0
    Спасибо за ваш повтор alonisser. я уже знаю основы Django и верю, что могу сделать то, что вы описали, но я не могу понять / представить, "как я могу получить информацию от моих клиентов (внутренних серверов)?" , Каждый работник получит сообщение от RabbitMQ и выполнит некоторый процесс. чем я могу достичь результата процесса со стороны Django?
  • 0
    Может быть, это может помочь вам simondlr.com/post/24479818721/…
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню