Django: база данных в реальном времени с использованием каналов - PullRequest
0 голосов
/ 11 апреля 2020

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

Так, например, что если мой потребитель "view" будет опрашивать базу данных и уведомление pu sh каждый раз, когда оно меняется на клиента. Как будто все клиенты этой страницы подключаются к одной и той же комнате чата и ждут «сообщений» с сервера.

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

1 Ответ

0 голосов
/ 13 апреля 2020

В вашем случае, если это просто чат, вам лучше не наблюдать за БД напрямую, а посылать сообщение через слои канала, когда сообщение публикуется / обновляется https://channels.readthedocs.io/en/latest/topics/channel_layers.html, вы можете сделать это из любого пользователя в ваш django код.

Тогда любые потребители WS, подписавшиеся на эти группы слоев, будут проинформированы об изменении.

Если вы столкнулись с более сложной ситуацией со многими различными моделями, которые следует наблюдать:

Вам не нужно опрашивать базу данных (при условии, что все изменения, внесенные в базу данных, сделаны с помощью django ORM).

Вот библиотека https://github.com/hishnash/djangochannelsrestframework, который поддерживает подписку на объекты в вашей базе данных.

С этим вы можете подписаться на изменения в БД, также добавлены некоторые другие вспомогательные функции, чтобы вы могли повторно использовать существующий django код остальной инфраструктуры, который вы могли бы иметь в своем проекте.

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