目前我搜到网上所有配置Django+channels的教程/博客中,都没有提及这一点。希望能帮助你
踩的坑必须写在最前面:
解决办法:在项目的settings.py中
INSTALLED_APPS = [
“daphne”, # 增加daphne这一项,而且必须在channels之前
‘channels’,
]
出现原因:使用manage.py runserver 命令,默认是执行WSGI的(即使你更新并删除了settings.py中的WSGI),我们必须注册daphne/其他的服务端也可以,这样执行manage.py runserver 命令才会去更改默认的服务器,使用ASGI的。
问题背景:
最近,想去做一个ai训练模型在网页上进行展示,具体实现想法就是,前端发送状态,后端接收,将状态传入已经训练好的基于tensorflow框架下的神经网络模型,返回一个得到的动作,前端执行该动作获得新的状态,前端发送新的状态,如此循环,直至触发停止条件。
对于这种需求
使用http可以解决,但是每次新的状态都去发起请求,这对服务器的负荷是比较重的,
如果你也遇到了这个问题,可以考虑用webSocket去解决。
WebSocket协议:
Django+Channels,实现webSocket通信
step1:安装
pip install django>=3.0
pip install channels
pip install daphne
step2:创建project
django-admin startproject WebSocketTest
step3: 创建app
python manage.py startapp app01
step4:注册Chanels & daphne 这个daphe好多教程都不说,必须加!!!
INSTALLED_APPS = [
# 其他app
'daphne', # 必须在channels的上面
'channels',
# 其他app
]
step5:编写asgi.py
import os
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
from webSocket import routing
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'webSocket.settings')
# application = get_asgi_application()
application = ProtocolTypeRouter({
'http': get_asgi_application(),
'websocket': URLRouter(routing.websocket_urlpatterns),
})
step6:增加ASGI配置
ASGI_APPLICATION = 'webSocket.asgi.application'
step7:增加routing
from django.urls import path
from app01 import consumers
websocket_urlpatterns = [
path('room/hony', consumers.ChatConsumer.as_asgi())
]
step8:编写consumers.py
from channels.exceptions import StopConsumer
from channels.generic.websocket import WebsocketConsumer
class ChatConsumer(WebsocketConsumer):
def websocket_connect(self, message):
self.accept()
def websocket_receive(self, message):
print(message)
self.send("不要")
def websocket_disconnect(self, message):
raise StopConsumer()
step9:运行代码
python manage.py runserver
当出现
这个的时候,就说明成功了
原文地址:https://blog.csdn.net/qq_25218219/article/details/131752459
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_11287.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。