tags:

views:

63

answers:

1

How do I obtain and use the HttpRequest using the request_finished signal?

Interested in extracting the url for logging purposes.

Current code looks something like this:

import logging

def write_to_file(sender, **kwargs):
    logging.debug(type(sender))
    logging.debug(dir(sender))

from django.core.signals import request_finished
request_finished.connect(write_to_file)

generates this

2010-03-03 13:18:44,602 DEBUG <type 'type'>
2010-03-03 13:18:44,602 DEBUG ['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__', '_get_traceback', 'apply_response_fixes', 'get_response', 'handle_uncaught_exception', 'initLock', 'load_middleware', 'request_class', 'response_fixes']
+1  A: 

Try

sender.request_class.get_full_path()

or

sender.request_class._get_request()

Or, if you want to try doing this with middleware, as mountainswhim suggested, here's a snippet that demos request timing using middleware.

Ofri Raviv