-?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.routingapplication = ProtocolTypeRouter({'websocket': AuthMiddlewareStack(URLRouter(app01.routing.websocket_urlpatterns # 指明路由文件是app01.routing.py )), })
?
- app01中的routing.py 文件:
from django.conf.urls import urlfrom . import consumerswebsocket_urlpatterns = [url(r'^ws/deploy/(?P<service_name>[^/]+)/$', consumers.DeployResult),url(r'^ws/$', consumers.ws), ]
?
? - 視圖文件 consumers.py :
待續。。。
?