durusmail: quixote-users: do something at the end of every request
do something at the end of every request
do something at the end of every request
Oleg Broytmann
2005-02-28
On Mon, Feb 28, 2005 at 10:36:45AM +0200, Ksenia Marasanova wrote:
> If I need to execute some code at the end of every request, should I
> override all 3 functions for that?
>
> finish_successful_request
> finish_interrupted_request
> finish_failed_request
>
> Or is there a better approach?
> (in Quixote1)

   I do it the following way:

    def process_request(self, request, env):
        from DB import transaction_commit, transaction_rollback
        try:
           output = Publisher.process_request(self, request, env)
           self.log_access(request) # log to DB
        except:
           transaction_rollback()
           raise
        else:
           transaction_commit()
        return output

Catch and rereaise any error, except for errors in rollback().

Oleg.
--
     Oleg Broytmann            http://phd.pp.ru/            phd@phd.pp.ru
           Programmers don't die, they just GOSUB without RETURN.

reply