Какую технологию выбрать для асинхронной передачи данных?

Стоит задача - асинхронно получать данные с сервера.
Идея такая - человек логинится в систему и начинает получать некоторые графики (тренды или текущие показатели с определенного датчика или нескольких). Данные с устройств пишутся в базу (PostgreSQL). Интерфейс, где пользователь логинится в систему, настраивает привязки датчиков к своему аккаунту и прочие настройки написаны на Django (ну как написаны, это дело в процессе).
По моему замыслу, человек логинится и видит перед собой интерфейс - отдельный фрейм для постоянного вывода данных + всякие кнопки для настроек.
Так вот вопрос - что читать, какую технологию выбрать для постоянного отображения?
Сразу скажу - датчиков сотни, людей десятки, отношения - многие ко многим, с одного датчика десяти сигналов в секунду.
Буду рад любым советам (до этого проекта опыт только С++)
  • Вопрос задан
  • 477 просмотров
Пригласить эксперта
Ответы на вопрос 5
dizballanze
@dizballanze
Software developer at Yandex
WebSocket + Tornado, например.
Ответ написан
Комментировать
mututunus
@mututunus
Backend developer (Python, Golang)
Ответ написан
Комментировать
AloneCoder
@AloneCoder
[object Object]
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Поддержу про торнадо, но еще более рекомендую посмотреть на cyclone.io
Это торнадо переписанный под twisted, который как нельзя лучше вам подойдет (это я про https://twistedmatrix.com/ ). У меня так система работает, вся обработка делается в twisted, а отдаю через cyclone по ajax (вебсокетов на клиентах, увы у меня нет :-( )
А технология называется comet. Реализуется в разных вариантах, у которых есть плюсы и минусы. Смысл в том, что браузер тем или иным образом (comet, websocket, ajax, ajaxp, longframe, longpooling и т.д.) подключается к серверу и ждет прихода события от сервера. Само событие может содержать кучу данных, которые обновились.

Я бы рекомендовал сделать следующим образом. Поставить сервер очередей типа rabbitmq, а через торнадо/cyclone подключаться к очереди через ajax/ajaxp и/или websockets.

Ну а если просто нужно слушать очереди сообщений (без хитрой обработки на web-сервере), то можно просто обойтись rabbitmq-stomp.

В принципе, в циклоне есть несколько примеров:
- https://github.com/fiorix/cyclone/tree/master/demo... - очереди на основе redis
- https://github.com/fiorix/cyclone/tree/master/demo... - собственно websocket
- https://github.com/fiorix/cyclone/tree/master/demo... = чистый ajax
Ответ написан
Комментировать
@marazmiki
Укротитель питонов
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы