Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 17, 2015 11:11:33

k0st1an
Зарегистрирован: 2013-02-07
Сообщения: 86
Репутация: +  0  -
Профиль   Отправить e-mail  

Связка frontend и backend

Доброго времени соток.

Пишу frontend и уже подхожу к тестированию. Уже есть функционал на backend-е. Но пока они не как не соединены. Часть связи будет проходить через RabbitMQ (frontend отдает команды в backend). Но, проблема в том, что backend должен периодически писать в базу. И тут вопрос как это сделать грамотно. Не хватает практики. На backend-е написан агент, который после работы должен результат записать в базу, которой пользуется frontend. Но база в django сами знаете какая. Одно дело пользоваться API, другое дело писать прямые запросы в базу – глупо. Особенно если есть поля ManyToMany и так далее.

Может есть какое-то решение как это сделать, может почитать есть что полезное на эту тему.



—-
memento mori

Офлайн

#2 Ноя. 17, 2015 12:42:45

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Связка frontend и backend

зачем RabbitMQ? что мешает дёргать напрямую апи бекенда
какой ещё ‘бекенд агент’? поищите примеры с angular + django-rest-framework

Офлайн

#3 Ноя. 17, 2015 13:41:12

k0st1an
Зарегистрирован: 2013-02-07
Сообщения: 86
Репутация: +  0  -
Профиль   Отправить e-mail  

Связка frontend и backend

Агент занят обслуживанием процесса (запуск, перезапуск, выполнение операций с конфигами процесса, да и вообще все что нужно будет делать с этим процессом). RabbitMQ как раз и нужен чтоб распределить эти процессы по разным серверам (физическим). Например чтоб поднять процесс будет одна очередь. Все агенты к ней подключены и не важно кто себе эту задачу заберет. А после выполнения агент должен записать в базу где разместился сервер (процесс). И опять же через RabbitMQ будут отдаваться команды что делать с сервером. Только очередь уже не общая а конкретно для этого сервера.

Django тут как интерфейс + модели. У меня проблема получения от агента информацию. Пользователи кликают мышкой, заказывают услугу. Потом нужно небольшое управление этим сервером.

Вот какая задача.



—-
memento mori

Офлайн

#4 Ноя. 18, 2015 00:56:09

k0st1an
Зарегистрирован: 2013-02-07
Сообщения: 86
Репутация: +  0  -
Профиль   Отправить e-mail  

Связка frontend и backend

Вопрос конкретезировался. Что можно использовать чтоб получать информацию от агента к django (в базу). RabbitMQ конечно было бы удобно, но с Django не проканает. Нужно что-то что может висеть и получать данные и писать их в базу.

Наверняка я есть что-то уже готовое. Или как-то организовать работу. Я подумал, что можно использовать для этого Celery. Через Django кинуть в Celery задание, а оно в RabbitMQ (тут вроде даже двойное использование RabbitMQ) и ждать ответа. После получения результата писать в базу. Ничего другого не придумал. Пока не очень понятно, как это в коде организовать.

ЗЫ
Я не веб-разработчик. Потому многого не знаю. Так что сильно пинать не надо.



—-
memento mori

Офлайн

#5 Ноя. 18, 2015 14:25:19

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Связка frontend и backend

k0st1an
все верно, для запуска долгоиграющих задач в фоне используют celery, там и воркеры свои

если я правильно понял проблему, то http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#keeping-results и http://docs.celeryproject.org/en/latest/faq.html#how-do-i-get-the-result-of-a-task-if-i-have-the-id-that-points-there смотри, я в наверно в рест обернул всё это дело и клиентом проверял состояние задачи (выполнена или нет)

Отредактировано slav0nic (Ноя. 18, 2015 14:26:49)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version