Каналы Django не могут регистрировать исключения в консоли

Django-Channels не могут отображать ошибку исключения в консоли, когда возникает исключение в любом разделе моего потребителя.

он просто показывает «WebSocket DISCONNECT / ws / test / [127.0.0.1:7907]» в консоли при возникновении исключения.

Я запускаю проект с настройкой debug = True с помощью этой команды:

python3 manage.py runserver

Я использую базовые настройки для django-каналов:

# CHANNELS
# ------------------------------------------------------------------------------
ASGI_APPLICATION = "config.routing.application"
CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        'CONFIG': {
            "hosts": [('127.0.0.1', 6379)],
        },
    },
}

и есть очень простой потребитель для тестирования:

class Test(WebsocketConsumer):
  def connect(self):
    print(self.scope['headers'])  # show headers in console.
    raise Exception('test exception')  # this line doesn't show any thing in console. just show disconnect message.
    self.accept()

  def receive(self, text_data=None, bytes_data=None):
    print(text_data)

и маршрутизация:

application = ProtocolTypeRouter({
    'websocket': AuthMiddlewareStack(
        URLRouter(
            orders.routing.websocket_urlpatterns
        )
    ),
})

person Alex Mercer    schedule 03.07.2019    source источник
comment
Это означает, что он отключается до того, как попадет к вашему потребителю. Используете ли вы какой-либо механизм аутентификации? покажи свой routing.py   -  person Ken4scholars    schedule 03.07.2019
comment
Нет, это работает без проблем. но когда возникает исключение, он не выводит ошибку в консоли и просто показывает отключение. Я использую каналы django. Учебная маршрутизация.   -  person Alex Mercer    schedule 03.07.2019
comment
покажите свои настройки ведения журнала django   -  person Ken4scholars    schedule 03.07.2019
comment
я не меняю никаких настроек ведения журнала. Я использую настройки django по умолчанию, и нет никаких настроек ведения журнала.   -  person Alex Mercer    schedule 04.07.2019


Ответы (1)


Я нашел проблему. Каналы Django не могут регистрировать исключения в консоли, когда я использую приложение debug_toolbar. Я удалил debug_toolbar из INSTALLED_APPS, и проблема была решена.

это мои конфиги debug_toolbar:

# django-debug-toolbar
# ------------------------------------------------------------------------------
# https://django-debug-toolbar.readthedocs.io/en/latest/installation.html#prerequisites
INSTALLED_APPS += ['debug_toolbar']  # noqa F405
# https://django-debug-toolbar.readthedocs.io/en/latest/installation.html#middleware
MIDDLEWARE += ['debug_toolbar.middleware.DebugToolbarMiddleware']  # noqa F405
# https://django-debug-toolbar.readthedocs.io/en/latest/configuration.html#debug-toolbar-config
DEBUG_TOOLBAR_CONFIG = {
    'DISABLE_PANELS': [
        'debug_toolbar.panels.redirects.RedirectsPanel',
    ],
    'SHOW_TEMPLATE_CONTEXT': True,
}
# https://django-debug-toolbar.readthedocs.io/en/latest/installation.html#internal-ips
INTERNAL_IPS = ['127.0.0.1', '10.0.2.2']
person Alex Mercer    schedule 09.07.2019
comment
У меня была такая же проблема, панель инструментов отладки проглатывала исключения. После деактивации исключения начали появляться в консоли! - person Özer S.; 24.01.2020