Django - Как путь к моему вебсокету asgi может быть указан в моем swagger
Я создаю api, где две конечные точки используют протокол ws(s).
Поскольку мой API находится за конечной точкой Google, каждая конечная точка должна быть определена в файле OpenApi2.0.
Для создания этого определения я использую drf-yasg.
У меня есть файл routing. py следующего вида:
""" systems/routing.py"""
from django.urls import path
from .consumers.list_sessions_consumer import MyFirstConsumer
from .consumers.session_consumer import MySecondConsumer
urlpatterns = [
path(r'v1/ws/yo/<str:uuid>/sessions-sumpup', MyFirstConsumer.as_asgi()),
path(r'v1/ws/yo/<str:uuid>/sessions', MySecondConsumer.as_asgi()),
]
и регистрирую его в файле asgi.py следующим образом:
# pylint: skip-file
""" main/asgi.py """
import os
import django
from django.core.asgi import get_asgi_application
django_asgi_app = get_asgi_application()
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'main.settings')
django.setup()
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from systems.websockets.routing import urlpatterns as system_websocket_url
application = ProtocolTypeRouter({
"http": django_asgi_app,
"websocket": AuthMiddlewareStack(
URLRouter(
system_websocket_url
)
),
})
Не обращайте внимания на порядок импорта, это связано с этой ошибкой: Django apps are not loaded yet when using asgi
Итак, мой сокет работает как ожидалось, теперь я хочу, чтобы моя командная строка: python3 manage.py generate_swagger swagger.yaml добавить эти новые конечные точки в мой swagger файл.
Я попытался напрямую добавить мой url в тот же объект, затем все мои другие url, как например:
urlpatterns = [
path(r'v1/toto/<str:uuid>', MyView.as_view()),
...,
path(r'v1/ws/yo/<str:uuid>/sessions-sumpup', MyFirstConsumer.as_asgi()),
path(r'v1/ws/yo/<str:uuid>/sessions', MySecondConsumer.as_asgi()),
]
Но в моем файле swagger ничего не отображается.
Есть идеи?
Спасибо