Я пытаюсь использовать проект каналов (http://channels.readthedocs.org/en/latest/index.html) на django.
В то время как в документах есть хороший учебник по созданию приложения для веб-приложений (chat) на основе групп, я не мог найти что-то, связанное с простым механизмом 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)
routing.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",
}
Хотя он работает нормально, я не могу помочь, но чувствую, что немного переборщил (?) Есть ли способ использовать конструктор канала вместо Group?
Спасибо:)