Comment savoir quels middlewares django sont activés de manière asynchrone et lesquels ne le sont pas ?
Pour voir quel middleware Django doit adapter, vous pouvez activer la journalisation de débogage pour le django. demande l'enregistreur et recherche les messages de journal sur "Middleware synchrone… adapté".
J'ai essayé de faire exactement la même chose mais sans succès.
Ceci est mon fichier 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,
},
},
}
Même si j'ai configuré la variable LOGGING, je n'obtiens pas la sortie comme mentionné dans la documentation.
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
quand je lance le serveur daphne en utilisant,
daphne nom_projet.asgi:application
commande. Quelqu'un peut-il m'aider à obtenir la sortie sur ce que tous les middlewares sont asynchrones et ceux qui ne le sont pas.
J'ai essayé de créer une vue et de lui faire une demande via le navigateur, mais il ne semble pas imprimer d'intergiciels. Bien qu'il existe déjà le modèle d'administration qui pourrait utiliser les middlewares, il n'y a pas de sortie de type "intergiciel synchrone... adapté".
Solution du problème
L'enregistreur que j'ai utilisé dans la question est tout à fait correct pour voir quels middlewares sont activés asynchrones ou non. Mais le problème était que je me demandais pourquoi les middlewares fournis par Django ne s'affichaient pas ici, lesquels sont activés de manière asynchrone et lesquels ne le sont pas. J'ai donc essayé de créer moi-même un middleware pour vérifier cette fonctionnalité.
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
Maintenant, si vous ajoutez ce middleware dans le fichier settings.py et exécutez le serveur, vous verrez que le journal indiquera ce middleware comme prévu.
Commentaires
Enregistrer un commentaire