Django.request logger для поиска "Synchronous middleware ... adapted" для Django async

Я установил пробный async view в моем приложении Django, но представление продолжает рендериться синхронно. Согласно документации Django, я проверяю, что мое Middleware не является причиной проблемы:

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

Уже был задан вопрос на Stack Overflow, чтобы уточнить использование логгера для поиска промежуточного ПО, препятствующего работе async, но ответ неполный.

Вот что у меня есть в настройках, согласно приведенному выше ответу Stack Overflow:

settings.py

LOGGING = {  
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.request': {
            'handlers': ['console'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),
            'propagate': False,
        },
    },
}

А мое мнение:

views.py

from time import sleep
import asyncio
import logging
logger = logging.getLogger("info")

# --- Views
from django.db import transaction 
@transaction.non_atomic_requests
async def async0(request):
    #loop = asyncio.get_event_loop()
    #loop.create_task(lets_sleep())
    await asyncio.sleep(1)
    logger.debug('in index')
    logger.info('something')
    return HttpResponse("Hello, async Django!")

Я перезапустил встроенный сервер Django, но нигде не вижу вывода журнала. Где мне следует искать?

хотя вы опубликовали свое представление, лог относится к промежуточному ПО, поэтому вам нужно иметь sync only middleware для получения нужного вам лога. после этого вам нужно добавить корневой логгер:

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

этого было достаточно, чтобы я получил сообщение Synchronous middleware someMiddlewareOfYours adapted log msg

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