python - 如何解决错误 ImportError: cannot import name 'AsyncWebsocketConsumer'?
问题描述
我正在使用 Python 3.6、Django 1.11 和 chennels=2。我正在关注本教程,它在教程第 2 部分之前运行良好:http: //channels.readthedocs.io/en/stable/tutorial/part_2.html
当我转到教程第 3 部分并相应更改 ChatConsumer 文件时:http ://channels.readthedocs.io/en/stable/tutorial/part_3.html
我正面临这个问题
ImportError:无法导入名称“AsyncWebsocketConsumer”
消费者.py:
from channels.generic.websocket import AsyncWebsocketConsumer
import json
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.room_name = self.scope['url_route']['kwargs']['room_name']
self.room_group_name = 'chat_%s' % self.room_name
# Join room group
await self.channel_layer.group_add(
self.room_group_name,
self.channel_name
)
await self.accept()
async def disconnect(self, close_code):
# Leave room group
await self.channel_layer.group_discard(
self.room_group_name,
self.channel_name
)
# Receive message from WebSocket
async def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']
# Send message to room group
await self.channel_layer.group_send(
self.room_group_name,
{
'type': 'chat_message',
'message': message
}
)
# Receive message from room group
async def chat_message(self, event):
message = event['message']
# Send message to WebSocket
await self.send(text_data=json.dumps({
'message': message
}))
解决方案
更新到频道版本 2.1,它解决了这个错误!
pip install channels==2.1
推荐阅读
- node.js - 如何在 NodeJS 中的 MongoDB 中保存和检索 pdf 文件
- python-3.x - 笔记本选项卡中的多个 tkinter 标签未扩展到窗口的全长
- javascript - 如何将axios响应数据添加到数组中
- laravel - Laravel mix 在 mix v4+ 中总是未定义
- php - 关联数组值显示为字符串而不是 int
- javascript - 如果用户没有足够的积分,则提醒用户
- ajax - Flask Ajax 帖子返回 TypeError:'NoneType' 对象不可迭代用于表单数据
- angular - 避免出现显示图片“此站点无法正确加载 Google 地图”
- javascript - JSONArray 的排序键
- ios - 从 FireBase 数据库获取数据的两个函数,以及执行一些计算的第三个函数