Python Django通道:应用程序内部异常:消息类型app\u consumer.notification\u message没有处理程序
我正在尝试使用WebSocket向用户发送关于特定事件的通知。 我有以下触发websocket方法的接收器模型:Python Django通道:应用程序内部异常:消息类型app\u consumer.notification\u message没有处理程序,python,django,django-channels,Python,Django,Django Channels,我正在尝试使用WebSocket向用户发送关于特定事件的通知。 我有以下触发websocket方法的接收器模型: @receiver(预保存,发送方=设置。验证用户模型) def create_auth_令牌(发送方,实例=None,created=False,更新_字段=None,**kwargs): 如果更新_字段: 如果更新字段和instance.pan\u number\u verified中的“pan\u number\u verified”为真: notification=notif
@receiver(预保存,发送方=设置。验证用户模型)
def create_auth_令牌(发送方,实例=None,created=False,更新_字段=None,**kwargs):
如果更新_字段:
如果更新字段和instance.pan\u number\u verified中的“pan\u number\u verified”为真:
notification=notification.objects.create(消息=“您的PAN号码已被验证…前往”
“立即创建活动”。,user=instance)
通道层=获取通道层()
异步到同步(通道层组发送)(“通知%s”%instance.id{
“类型”:“应用程序\消费者.通知\消息”,
“消息”:str(notification.id)
})
以下是我的应用程序消费者:
class AppConsumer(WebsocketConsumer):
def连接(自):
self.room\u name=self.scope['url\u route']['kwargs']['user\u id']
self.room\u组\u名称='通知\u%s'%self.room\u名称
异步到同步(self.channel\u layer.group\u add)(
self.room\u group\u name,
self.channel\u名称
)
self.accept()
def断开连接(自身、关闭_代码):
异步到同步(self.channel\u layer.group\u discard)(
self.room\u group\u name,
self.channel\u名称
)
def接收(自身、文本数据):
text\u data\u json=json.load(text\u数据)
message=text\u data\u json['message']
异步到同步(self.channel\u layer.group\u send)(
self.room\u group\u name,
{
'type':'app\u consumer.notification\u message',
“消息”:消息
}
)
def通知_消息(自身、事件):
消息=事件['message']
self.send(text_data=json.dumps({
“消息”:消息
}))
但我收到以下错误消息:
应用程序内部异常:没有消息类型app\u consumer.notification\u消息的处理程序
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/channels/consumer.py”,第59行,调用
[receive,self.channel\u receive],self.dispatch
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/channels/utils.py”,第51行,等待发送
等待调度(结果)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/asgiref/sync.py”,第244行,在调用中
return wait asyncio.wait_for(future,timeout=None)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/tasks.py”,第414行,等待
返回等待未来
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/concurrent/futures/thread.py”,第57行,运行中
结果=self.fn(*self.args,**self.kwargs)
线程处理程序中的文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/channels/db.py”,第14行
return super().线程处理程序(循环,*args,**kwargs)
线程处理程序中的文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/asgiref/sync.py”,第277行
返回函数(*args,**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/channels/consumer.py”,第107行,在dispatch中
raise VALUERROR(“没有消息类型%s”%message[“type”]的处理程序)
没有消息类型app\u consumer.notification\u消息的处理程序
您在这里发布的是您的
通知\u消息
处理程序方法的名称
频道希望它被命名为app\u consumer\u notification\u message
在查找消息处理方法时,通道将消息类型中的
替换为。
(消息类型中的前缀不仅仅用于路由组名称)您在此处发出的是您的
通知\u消息处理程序方法的名称
频道希望它被命名为app\u consumer\u notification\u message
在查找消息处理方法时,通道将消息类型中的
替换为。
(消息类型中的前缀不用于路由,仅用于路由组名称)