如何为 ASGI Django Channels http 类型协议设置 urlpatterns?

问题描述 投票:0回答:1

我很确定我在文档中遗漏了一些东西, 但我无法在任何地方找到明确的答案。

我有一个 Django 应用程序,我想做的是将 Django Channels 用于 websocket 目的,但是我也对 Django Channels 可以为我提供的异步 http 感兴趣。

查遍了互联网以及Django Channels的源代码, 我能找到的唯一类型的示例与文档

中的示例相匹配

其中 ProtocolTypeRouter 中的“http”属性设置为

get_asgi_application
, 并且只有 websocket 有自己的 urlpatterns。

application = ProtocolTypeRouter({
    # Django's ASGI application to handle traditional HTTP requests
    "http": django_asgi_app,

    # WebSocket chat handler
    "websocket": AllowedHostsOriginValidator(
        AuthMiddlewareStack(
            URLRouter([
                path("chat/admin/", AdminChatConsumer.as_asgi()),
                path("chat/", PublicChatConsumer.as_asgi()),
            ])
        )
    ),
})

我不明白如何设置 http 属性将路由到的 urlpatterns。

python django django-channels asgi
1个回答
0
投票

这不起作用,请使用以下语法,如果您不使用,请首先使用 websocket(就像我删除以更好地理解)

应用程序 = 协议类型路由器({ # Django 的 ASGI 应用程序处理传统的 HTTP 请求 “http”:django_asgi_app, '通道': ChannelNameRouter({ '渠道名称': ConsumerName.as_asgi(), }) })

© www.soinside.com 2019 - 2024. All rights reserved.