Django Channels 给我一个奇怪的错误

Posted

技术标签:

【中文标题】Django Channels 给我一个奇怪的错误【英文标题】:Django Channels throwing me a strange error 【发布时间】:2020-11-19 15:25:31 【问题描述】:

我在使用 Django(通道)的套接字框架时遇到问题。我正在使用最新版本 3.0.2。我一直在我的几个项目中使用它,但现在我遇到了一个非常奇怪的、描述不正确的错误。在这里你可以看到我的全局路由配置:

application = ProtocolTypeRouter(
    "websocket": AuthMiddlewareStack(
        URLRouter(routing.urlpatterns),
    ),
)

以及本地应用路由配置:

urlpatterns = [path("signup/", consumers.SignUpWebsocketConsumer.as_asgi())]

消费者是一个完全默认的消费者实现:

class SignUpWebsocketConsumer(JsonWebsocketConsumer):
    def connect(self):
        self.accept()

    def disconnect(self, close_code):
        pass

我的应用加载完全正常:

HTTP/2 support enabled
HTTP/2 support enabled
Configuring endpoint tcp:port=8000:interface=127.0.0.1
Configuring endpoint tcp:port=8000:interface=127.0.0.1
Listening on TCP address 127.0.0.1:8000
Listening on TCP address 127.0.0.1:8000

当我的客户端尝试访问套接字时出现问题。 我收到此错误:

socket.gaierror: [Errno -3] Temporary failure in name resolution

我已经尝试克服这个问题大约 2 天,但仍然不知道是什么导致了这个问题。希望这里有人对此有所了解:)

【问题讨论】:

【参考方案1】:

呵呵,这不是新版本的bug,只是我的错误。如果有人有同样的问题,请检查您的 settings.py 文件以获得良好的 redis 服务器 url。所以我的 redis url 配置不正确。

【讨论】:

以上是关于Django Channels 给我一个奇怪的错误的主要内容,如果未能解决你的问题,请参考以下文章

Django Channels 错误:失败:在建立连接之前关闭 WebSocket

Django Channels No module named 'asgiref.sync' 错误

Django Channels - 未执行连接

Django Channels 2.4 和 Websockets 在 Elastic Beanstalk 和 ElastiCache 上给出 502 错误

无法使用 django-channels 连接到 websocket,docker 上的 nginx 作为服务

Django Channels __init__() 有一个意外的关键字参数“范围”