Je travaille sur une application Flask et je veux enregistrer les requêtes entrantes et les réponses sortantes avant que Flask ne démarre. Pour ce faire, j'utilise un wrapper autour de WSGI. Je l'ai pour la partie demande, mais j'ai besoin de quelques indications sur la partie réponse.Enregistrement du corps de la réponse dans le wrapper de requête/réponse Flask WSGI
C'est le code que j'ai jusqu'à présent.
import logging
import pprint
from cStringIO import StringIO
log = logging.getLogger(__name__)
class WSGIRequestResponseLogging(object):
"""
This wrapper works independently from Flask and wraps the WSGI application. It shows exactly what
request is going in and what response is going out.
http://werkzeug.pocoo.org/docs/0.11/wrappers/
"""
def __init__(self, app):
self._app = app
def __call__(self, environ, start_response):
log.debug(pprint.pprint(('REQUEST', environ)))
if environ.get('REQUEST_METHOD') == 'POST':
length = environ.get('CONTENT_LENGTH', '0')
length = 0 if length == '' else int(length)
if length == 0:
log.debug("REQUEST_BODY: EMPTY")
else:
body = environ['wsgi.input'].read(length)
log.debug("REQUEST_BODY: " + body)
# After reading the body it is removed, restore it
environ['wsgi.input'] = StringIO(body)
def log_response(status, headers, *args):
log.debug(pprint.pprint(('RESPONSE', pprint.pprint(('RESPONSE', status, headers)))))
return start_response(status, headers, *args)
return self._app(environ, log_response)
Comment puis-je consigner le corps de la réponse dans log_response?
Cordialement, nidkil
Fonctionne comme un rêve. Merci Graham! – nidkil