• channels2.X 学习笔记


    - No module named 'asgiref.sync' 报错解决:

    # 报错原因:
    """
    django版本过低, 卸载最新版本的 channels 使用2.x 版本的
    """
    pip3 uninstall channels

    - 安装:

    """
    Django 1.11.15 版本不支持最新的 channels
    """
    
    pip3 install channels==2.1.4

    - 在django中的配置:

      - 配置settings.py文件:

    # 添加APP
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'channels',
        "app01.apps.App01Config",
    ]
    
    # 其他配置文件 ...
    
    # ASGI 的路由设置
    ASGI_APPLICATION = 'ChannelDemo.routing.application'
    CHANNEL_LAYERS = {
        "default": {
            "BACKEND": "asgiref.inmemory.ChannelLayer",
            "ROUTING": "ChannelDemo.routing.channel_routing",
        },
    }

      - channels的路由配置:

    # 在项目settings文件同级目录中新增routing.py
    from channels.auth import AuthMiddlewareStack
    from channels.routing import ProtocolTypeRouter, URLRouter
    import app01.routing
    
    application = ProtocolTypeRouter({
        'websocket': AuthMiddlewareStack(
            URLRouter(
                app01.routing.websocket_urlpatterns  # 指明路由文件是app01.routing.py
            )
        ),
    })

      - app01中的routing.py 文件:

    from django.conf.urls import url
    
    from . import consumers
    
    websocket_urlpatterns = [
        url(r'^ws/deploy/(?P<service_name>[^/]+)/$', consumers.DeployResult),
        url(r'^ws/$', consumers.ws),
    ]

       - 视图文件 consumers.py :

      待续。。。

  • 相关阅读:
    【线性表2】线性表的顺序实现:顺序表
    【JSP】EL函数和自定义EL函数
    移动架构-策略模式
    移动架构-状态模式
    移动架构-观察者模式
    移动架构-模板模式
    移动架构-解释器模式
    移动架构-命令模式
    移动架构-责任链模式
    移动架构之建造者模式
  • 原文地址:https://www.cnblogs.com/Fushengliangnian/p/10200777.html
Copyright © 2020-2023  润新知