Каналы Django 2.x или Ajax?

У меня есть jQuery dataTable с большим количеством данных (более 10000 строк), которые могут использоваться/обновляться в режиме реального времени многими пользователями, и мне нужно, чтобы эта таблица постоянно обновлялась и обновлялась. Я пробовал с вызовами Ajax в 1 секунду и понял, что это нехорошо, поскольку каждый пользователь отправляет запрос Ajax каждую секунду * 50 или более пользователей, и я думаю, что должно быть лучшее решение. Я думал использовать каналы Django или что-то подобное (?), И мне было интересно, возможно ли это? По сути, мне нужно настроить какой-то прослушиватель для модели (базы данных) и получать новые данные при изменении (то есть почти каждую секунду). Я хотел бы услышать здесь мнение человека, у которого больше опыта, чем у меня. Заранее спасибо.

Пс. Мне сказали использовать для этого веб-сокеты.


person dev.ink    schedule 10.02.2020    source источник


Ответы (1)


Короче говоря, да, веб-сокет был бы предложенным способом сделать это.

Если все обновления моделей, на которые вам нужно подписаться, производятся через Djangos ORM.

Я бы посоветовал изучить (или вдохновиться) DjangoChannelsRestFramework в качестве отправной точки для подписки на несколько моделей. в вашей бд.

Эта библиотека настроена так, чтобы вы могли подписаться на несколько типов объектов через одно соединение через веб-сокет и получать сообщения ws всякий раз, когда эти объекты изменяются. Он также предоставляет некоторые инструменты, позволяющие повторно использовать существующие представления DRF через веб-сокет.

Отказ от ответственности: я являюсь автором DjangoChannelsRestFramework.

person Matthaus Woolard    schedule 10.02.2020
comment
Ну, я еще не использую DRF. Итак, я полагаю, каналы — это хороший способ начать, верно? - person dev.ink; 11.02.2020
comment
да Каналы должны быть хорошим решением, если все обновления БД происходят из контекста вашего сервера. (чтобы подписчики на веб-сокетах могли быть проинформированы) - person Matthaus Woolard; 11.02.2020