On Jan 19, 9:17 am, Anthony <abasta...@gmail.com> wrote: > On Wednesday, January 19, 2011 8:18:25 AM UTC-5, ae wrote: > > > I have lots of users and when one thread takes a long time, some users > > can keep accessing controller functions and some can't. Once the long- > > running controller finishes, everyone can access stuff again. > > Are you saying that when user A hits a long-running controller (action), > that sometimes blocks user B (who is presumably using a different machine) > from accessing the application? Is this just a thread starvation issue? I > assume user B wouldn't be affected by user A unless there just aren't any > available threads left to service B's request, no?
Possibly. If you have many threads, then B is unlikely to be assigned to the same thread as A and the behavior won't be exhibited. Configure web2py with just two threads and open a few browsers using different profiles (they each have to have unique cookies). They can be on different hosts or not (My office-mate and I each have a desktop and a laptop--we tested this together). As for thread starvation, I'd say no. The host running web2py is an 8- core machine that's mostly idle. I've also tested this on my desktop (4-core) which was also mostly idle. Also, the 'blocking' in the long running function is just a call to sleep() and in the production environment it's a connections to other hosts that block; they return small (<1k) strings. Lastly, if it were thread starvation, then I would expect that no user could do anything. For users who /can/ access the app, performance is normal. It's easy to test this (but once more: Rocket might be different).