On 16/02/2009, at 19:09, [email protected] wrote: > On Monday 16 February 2009 22:41:02 Russ Ryba wrote: >> On Feb 15, 11:05 am, [email protected] wrote: >>> just a quick note, "yield" generators will hold up whole stack >>> (for that long time), so be careful what u keep up there - with >>> many paralel requests the memory may get eaten. >>> >>> On Sunday 15 February 2009 17:33:20 Russ Ryba wrote: >>>> I just added a tutorial to the cookbook showing how to use >>>> yield to serve out large content or perhaps do long polling. >>>> The simple example uses time.sleep to simulate some long >>>> process. You'll find that it does sleep correctly and delay >>>> spitting out content if you use telnet. It is flushing the >>>> content. >>>> >>>> If you have problems getting it to show up you need to play >>>> with the web headers. Transfer-Encoding "chunked". If your >>>> browser doesn't support it then it may buffer the content and >>>> instead of incremental download you'll see a large delay then >>>> the whole page. >>>> >>>> I've only tested this with the CherryPy server. I don't know >>>> if it works with others. >>>> >>>> http://webpy.org/cookbook/streaming_large_files >>>> >>>> Comments and feedback appreciated. >>>> >>>> Thanks, >>>> >>>> Russ Ryba >> >> I'll have to read up on generators. I thought they reduced >> resource usage by saving state without resorting to threads. I >> admit I don't really know what they are doing behind the scenes >> yet, and I'm only just figuring out how to use them. >> >> Is what you said about holding up the stack limited to CPython, or >> would there be similar problems in stackless python as well? > > no idea. i'm not even sure about whole stack, but surely it holds the > namespace=locals+globals, whatever that means (lifespan, things not > dying etc.). > i've used async stuff with medusa back then, with generators, it was > pretty good.
(Sorry about the empty message!!) The generator of course holds all the variables but keep in mind that it will not live much longer than the regular function that would generate a normal reply would and has the added benefit of not creating a large buffer for large replies and lower latency for all kinds of replies. What I dislike is the manual setting of the Transfer-Encoding. Couldn't the framework set this header if the controler returns a generator? The framework could even fix some inconvenient behaviour from the controller like returning very small chunks by buffering the return values until they reach a minimum size. Is there any problem with automatically setting the header for generators? Javier --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web.py" 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/webpy?hl=en -~----------~----~----~----~------~----~------~--~---
