Джанго сигналы против каналов - PullRequest
0 голосов
/ 06 июля 2018

У меня есть проект на основе Django, который я хотел бы сделать в реальном времени, поэтому я подумал о каналах Django. Однако я все еще не уверен, является ли это правильным проектом для применения каналов Django и к какой части проекта я должен его применить.

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

Поток данных: датчики> шлюз> база данных> серверная часть> внешний интерфейс

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

Мои вопросы

1) Где в этом примере я должен реализовать каналы Django?

  • от датчиков к шлюзу
  • от шлюза к базе данных
  • из базы данных в бэкэнд
  • от сервера к интерфейсу
  • все вышеперечисленное

2) Сигналы Django против каналов Django - перекрываются?

Такое ощущение, что сигналы Django выполняют свою работу в режиме реального времени, когда они слушают обновления в базе данных. Когда он уведомляет меня об обновлении, я просто вызываю код, который выполняет некоторые уведомления, которые я хочу. Разве это не в режиме реального времени? Должен ли я использовать каналы Django здесь?

Заранее спасибо за любую помощь!

1 Ответ

0 голосов
/ 06 июля 2018

Я реализовал нечто подобное с Django. Вот основные моменты:

  1. Датчики отправляют новые данные в Django с помощью REST API (используя DRF );
  2. Django обрабатывает данные. Интенсивные вычисления выполняются с помощью Celery вместо использования сигналов для быстрого закрытия соединения с клиентом;
  3. Затем Celery обновляет базу данных обработанными данными и использует каналы для уведомления клиентов клиентской части.

Каналы лучше всего работают при использовании с WebSockets во внешнем интерфейсе. Вначале может быть сложно иметь полную рабочую производственную настройку, но конечный результат обычно очень хорош для уведомлений в браузере в реальном времени современным и интерактивным способом (, т.е. без обновления страницы ).

...