On Thu, 2009-07-09 at 13:19 -0700, Fluoborate wrote:
> Hello All,
>
> I am afraid that I might have to write my own middleware to do this. I
> really want to do something like the following:
>
> #In views.py:
>
> def welcome( request ):
> return HttpResponse( "Welcome to my website" )
> #No code after the 'return' statement will ever be executed, but I
> wish it would:
> time-consuming_function( request )
>
> Why do I want to do this? My website feels a bit slow to use, because
> it needs to do time-consuming_function. The content of the HTTP
> response does not depend on time-consuming_function, so why should the
> user have to wait for it? Unfortunately, time-consuming_function DOES
> depend on the HttpRequest object and other local variables only
> available in the scope of the view function, so it is much more
> convenient to execute time-consuming_function inside the view
> function.
>
> Here is how I could do it in middleware, if nobody has an easier
> solution:
>
> @this_view_function_has_a_callback
> def welcome( request ):
> return HttpResponse( "Welcome to my website" ), time-
> consuming_function, { "request" : request }
>
> I would have to write middleware to unpack the tuple returned by the
> view function and do the proper stuff with each piece. What a hassle.
>
> Has anyone already written that? Is there some much smarter and more
> graceful work-around? Thank you all so much.
Would doing the expensive function in a generator be enough? Eg:
def welcome(request):
def worker():
yield "Welcome to my website"
yield time_consuming_function(request)
return HttpResponse(worker())
The user will see the 'Welcome to my website' immediately, and the page
will continue to load in the background, performing your time consuming
function.
Cheers
Tom
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---