小编mit*_*est的帖子

使用django频道时如何使用Channel而不是Group?

我正试图在django上使用渠道项目(http://channels.readthedocs.org/en/latest/index.html).

虽然在文档上有一个很好的教程,用于构建基于Group的websocket应用程序(聊天),我找不到与客户特定的简单推送机制相关的东西(所以不需要使用Group)

假设我想要与各种新闻提供者一起构建一个feed聚合器,当用户访问主页并等待所有的feed被解析时,我想向他发送关于服务器正在解析哪一个的信息性消息,而他等待.

我现在得到的是: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)
Run Code Online (Sandbox Code Playgroud)

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",
}
Run Code Online (Sandbox Code Playgroud)

虽然它工作正常,但我觉得这有点矫枉过正(?)有没有办法只使用Channel构造函数而不是Group?

谢谢 :)

python django asynchronous push channels

12
推荐指数
1
解决办法
4555
查看次数

标签 统计

asynchronous ×1

channels ×1

django ×1

push ×1

python ×1