Are you suggesting something like this (which is what I am currently doing):

In my model I define a decorator:

def finish_request(fn, *args, **kwargs):
    def wrapped():
        res = fn(*args, **kwargs)
        do_whatever_after_the_request_has_been_processed()
        return res
    return wrapped

And then in my controller:

@finish_request
@auth.requires_login()
def index():
    return "Hello"



On Thursday, March 14, 2013 11:48:48 AM UTC+1, Niphlod wrote:
>
> let's dive it into .... I don't think there's an integrated way to do it, 
> rather than decorating your function with something else.
> Please note that as far as I know (but I may be totally wrong) you can't 
> actually return from a function (so it gets rendered and transferred to the 
> client) and continue your computation....i.e. if you have return 'abcd' to 
> ship 'abcd' to the client, execution stops there.
> So, assuming that you are fine with, e.g.
> def func():
>      result = 'abcd'
>      .....some lengthy "after callback"
>      return result
>
> I'd say it's definitely "doable".
> If I remember correctly, there's only one handy shortcut available without 
> starting toying with decorators.... response.custom_commit that can be a 
> callable and gets called at the end of every request (before returning the 
> results) 
>
> PS: if the thing to do "after callback" is fine if executed 
> asynchronously, you can set up a queue of things to do to be processed 
> afterwards.
>
> PS2: to kick in after the rendering you must return the compiled template, 
> e.g.
> result = response.render(...)
> ...some lengthy "after callback"
> return result
>
> On Thursday, March 14, 2013 11:35:20 AM UTC+1, Daniel Gonzalez wrote:
>>
>> And (I am discovering some effects during testing):
>>
>> 4. Is it possible to call this function *after* the templates have been 
>> rendered?
>>
>> On Thursday, March 14, 2013 11:09:51 AM UTC+1, Daniel Gonzalez wrote:
>>>
>>> And:
>>>
>>> 3. Is it possible to call this function also for jsonrpc requests?
>>>
>>> On Thursday, March 14, 2013 11:00:13 AM UTC+1, Daniel Gonzalez wrote:
>>>>
>>>> Hi,
>>>>
>>>> For some tests that I am performing, I would like to call a function 
>>>> "request_processed()" (defined in a model, for example), at the end of 
>>>> every request.
>>>>
>>>> 1. Is this possible? How?
>>>> 2. Is it possible to also call this function in case no controller was 
>>>> found to serve the request?
>>>>
>>>> Thanks,
>>>> Daniel
>>>>
>>>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to