Каналы DJango подписываются на несколько событий
У меня есть django приложение с каналами. Оно открывает websocket соединение с провайдером данных крипто-рынка. Я получил тиковые данные, я вставляю эти тики в базу данных.
Я также хочу отправить эти тиковые данные в другое приложение (скажем, во фронтенд). Но у меня не получается сделать это эффективно.
В настоящее время существует только одно фронтенд-приложение. Поэтому, когда оно подключается к каналам django, я добавляю это соединение в группу с именем('root') и отправляю все данные о рыночных тиках в эту группу
Проблема в том, что если я решу подключить второе фронтенд-приложение, я получу все данные, которые запрашивал первый пользователь (поскольку оба клиента присутствуют в группе 'root' на django).
Я пробовал метод, когда пользователь запрашивает данные по определенной криптовалюте, то я добавляю его в группу с именем этой криптовалюты (если пользователю нужны данные только по биткоину, я добавляю его в группу биткоина). Но я получаю много crpto-данных на сервере django и очень большое количество тиков в секунду. Это кажется медленным для отправки данных каждого тика в канал конкретной криптогруппы (на тике проверяется символ и пересылается тик в канал django с именем символа).
Есть предложения, как подступиться к этой проблеме?
Вы можете отправлять данные в группы каналов из любой точки вашего кода Django
from channels.layers import get_channel_layer
from asgiref.sync import async_to_sync
async_to_sync(channel_layer.group_send)("root", {'messages' : message, 'type' : 'chat_message'})