- 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 :

  待续。。。

 

相关文章:

  • 2021-08-20
  • 2022-12-23
  • 2022-12-23
  • 2021-05-16
  • 2021-11-10
  • 2021-08-27
  • 2021-05-31
  • 2021-09-26
猜你喜欢
  • 2022-12-23
  • 2022-01-07
  • 2022-02-08
  • 2021-05-09
  • 2018-11-27
相关资源
相似解决方案