Как узнать, какие промежуточные модули django поддерживают асинхронность, а какие нет?

Чтобы увидеть, какое промежуточное ПО Django должно адаптироваться, вы можете включить отладочную регистрацию для логгера django. request и поискать сообщения в логе о "Synchronous middleware ... adapted" .

Я пытался сделать то же самое, но безуспешно.

Это мой файл settings.py:

LOGGING = {  
 'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'root': {
        'handlers': ['console'],
        'level': 'DEBUG',
    },
    'loggers': {
        'django.request': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

Хотя я установил переменную LOGGING, я не получаю вывода, как указано в документации.

Starting server at tcp:port=8000:interface=127.0.0.1
HTTP/2 support not enabled (install the http2 and tls Twisted extras)
Configuring endpoint tcp:port=8000:interface=127.0.0.1
Listening on TCP address 127.0.0.1:8000
HTTP b'GET' request for ['127.0.0.1', 42684]
HTTP 200 response started for ['127.0.0.1', 42684]
HTTP close for ['127.0.0.1', 42684]
HTTP response complete for ['127.0.0.1', 42684]
127.0.0.1:42684 - - [22/Mar/2022:12:11:47] "GET /admin/" 200 3550
HTTP b'GET' request for ['127.0.0.1', 42684]
HTTP 200 response started for ['127.0.0.1', 42684]
HTTP close for ['127.0.0.1', 42684]
HTTP response complete for ['127.0.0.1', 42684]
127.0.0.1:42684 - - [22/Mar/2022:12:11:48] "GET /admin/core/user/" 200 9028
HTTP b'GET' request for ['127.0.0.1', 42684]
HTTP 200 response started for ['127.0.0.1', 42684]
HTTP close for ['127.0.0.1', 42684]
HTTP response complete for ['127.0.0.1', 42684]
127.0.0.1:42684 - - [22/Mar/2022:12:11:48] "GET /admin/jsi18n/" 200 3343

когда я запускаю сервер daphne с помощью,

daphne project_name.asgi:application

команда. Может ли кто-нибудь помочь мне получить результат о том, какие промежуточные модули являются асинхронными, а какие нет.

Пробовал сделать представление и сделать к нему запрос через браузер, но ни о каких middlewares не вывелось. Хотя уже есть модель админки, которая может использовать промежуточные модули, но вывода типа "synchronous middleware ...adapted" нет.

Логгер, который я использовал в вопросе, вполне корректен для просмотра того, какие промежуточные модули включены или не включены асинхронно. Но проблема была в том, что мне было интересно, почему промежуточные модули, предоставляемые Django, не показывают, какие из них поддерживают асинхронность, а какие нет. Поэтому я попытался сделать промежуточное ПО самостоятельно, чтобы проверить эту возможность.

middleware.py

class SimpleMiddleware(MiddlewareMixin):
    def __init__(self, get_response):
        self.async_capable = False
        self.get_response = get_response
        # One-time configuration and initialization.

    def __call__(self, request):
        # Code to be executed for each request before
        # the view (and later middleware) are called.

        response = self.get_response(request)

        # Code to be executed for each request/response after
        # the view is called.

        return response

Теперь, если вы добавите это промежуточное ПО в файл settings.py и запустите сервер, то увидите, что в журнале будет написано об этом промежуточном ПО, как и предполагалось.

Вернуться на верх