Я пытаюсь использовать проект каналов (http://channels.readthedocs.org/en/latest/index.html) на django.
Хотя в документах есть хороший учебник по созданию группового веб-приложения (чата), я не смог найти что-то, связанное с простым механизмом push, который будет специфичным для клиента (поэтому нет необходимости использовать группу)
Допустим, я хочу создать агрегатор каналов с различными поставщиками новостей, и когда пользователь посещает домашнюю страницу и ждет, пока все каналы будут проанализированы, я хочу отправить ему информационные сообщения о том, какой из них анализируется сервером, пока он ждет .
Что я получил сейчас: Consumers.py
from channels import Group, Channel
from .views import sort_articles_by_date
from .soup import ProviderParser
from .models import Provider
# Connected to websocket.connect and websocket.keepalive
def ws_add(message):
Group("news_providers_loading").add(message.reply_channel)
def ws_message(message):
providers = Provider.objects.all()
articles = []
for provider in providers:
Group("news_providers_loading").send({'content': str(provider)})
parser = ProviderParser(provider)
articles.extend(parser.parse_articles())
sort_articles_by_date(articles)
# Connected to websocket.disconnect
def ws_disconnect(message):
Group("news_providers_loading").discard(message.reply_channel)
маршрутизация.py
channel_routing = {
"websocket.connect": "news_providers.consumers.ws_add",
"websocket.keepalive": "news_providers.consumers.ws_add",
"websocket.receive": "news_providers.consumers.ws_message",
"websocket.disconnect": "news_providers.consumers.ws_disconnect",
}
Хотя это работает нормально, я не могу с этим поделать, но чувствую, что это немного излишне (?) Есть ли способ просто использовать конструктор канала вместо группы?
Спасибо :)