2017-01-04 5 views
0

Я работаю над флеш-приложением и хочу регистрировать входящие запросы и исходящие ответы до того, как Flask выйдет. Для этого я использую обертку вокруг WSGI. Я работаю над частью запроса, но мне нужны некоторые указатели на часть ответа.Тело ответа на регистрацию в флешке WSGI-запрос/ответная обертка

Это код, который у меня есть до сих пор.

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) 

Как я могу зарегистрировать тело ответа в log_response?

С уважением, nidkil

ответ

2

Смотрите пример кода на сайте mod_wsgi по адресу:

Он должен работать с любым сервером WSGI.

Если вы используете mod_wsgi-express, эта функция аудита встроена.

mod_wsgi-express start-server --enable-recorder wsgi.py 
+0

Работает как сон. Спасибо, Грэм! – nidkil