You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Django Channels开发聊天Web遇TypeError问题求助

Django Channels异步消费者报错解决

错误原因

出现TypeError: object PublicChatConsumer can't be used in 'await' expression的核心原因是路由配置错误:你直接将PublicChatConsumer类传入了路由,而非通过as_asgi()方法生成可调用的ASGI应用实例。

因为你使用的是AsyncJsonWebsocketConsumer异步消费者,Channels要求异步消费者必须通过as_asgi()包装,才能生成支持await调用的ASGI应用对象。

解决方法

修改你的Channels路由文件(通常为routing.py),确保消费者通过as_asgi()方法注册:

from django.urls import re_path
from .consumers import PublicChatConsumer

websocket_urlpatterns = [
    re_path(r'^public_chat/(?P<room_id>\d+)/$', PublicChatConsumer.as_asgi()),
]

重点是给PublicChatConsumer加上.as_asgi()调用,这会将消费者类转换为符合ASGI规范的可异步调用的应用实例。

验证说明

你的PublicChatConsumer代码本身没有问题,继承AsyncJsonWebsocketConsumer并实现异步方法的写法是正确的,无需修改消费者内部逻辑。

内容的提问来源于stack exchange,提问作者ravi dochania

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:10:20