Как узнать, какие промежуточные модули 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 и запустите сервер, то увидите, что в журнале будет написано об этом промежуточном ПО, как и предполагалось.