the time to execute a typical web2py action my server is 10-20ms. The time to open a file or write a small file is so small that is not measurable. I am not sure I believe there is any issue here or perhaps I do not understand the problem. Can you provide a test case?
On Aug 25, 2:11 pm, John Heenan <[email protected]> wrote: > Even with file reading there is no way the disk drive, its controllers > and various buses can keep up with the CPU. > > Hence reading any file from disk will cause the OS to intervene and > block (reading a template view file, controller file or otherwise), > albeit a 'short' time. > > Here are two choices. > > 1) Put the read function in a thread, wait for the thread to unblock > and continue servicing any other threads that are no longer blocked. > This is what web2py does using a Python file read. The OS > automatically provides thread scheduling. > > 2) Tell the OS to pass a message to an event callback when the OS is > ready. A separate thread is not required if the application chooses to > process its own message queue as the thread in effect simply relays > the message on. > > There is of course other blocks: file writing, database access and > network read and write (including from/to the http request PC) > > It is tempting to say it is not rocket science. > > Anyway the main message is being aware of the plumbing and avoiding > blind religious type fixations is important for long term planning and > scalability issues. > > We really need to face up to realities that seeing Python as a black > box type total solution is not healthy. > > John Heenan > > On Aug 26, 2:27 am, mdipierro <[email protected]> wrote: > > > On Aug 25, 11:00 am, Phyo Arkar <[email protected]> wrote: > > > > Did I Read that reading files inside controller will block web2py , Does > > > it? > > > No web2py does not block. web2py only locks sessions that means one > > user cannot request two concurrent pages because there would be a race > > condition in saving sessions. Two user can request different pages > > which open the same file unless the file is explicitly locked by your > > code. > > > > Thats a bad news.. i am doing a file crawler and while crawling , > > > web2py is blocked even tho the process talke only 25% of 1 out of 4 > > > CPUs .. > > > Tell us more or I cannot help. > > > > On 8/25/10, pierreth <[email protected]> wrote: > > > > > I would appreciate a good reference to understand the concepts you are > > > > talking about. It is something new to me and I don't understand. > > > > > On 25 août, 11:22, John Heenan <[email protected]> wrote: > > > >> No, nothing that abstract. Using WSGI forces a new thread for each > > > >> request. This is is a simple and inefficient brute force approach that > > > >> really only suits the simplest Python applications and where only a > > > >> small number of concurrent connection might be expected. > > > > >> Any application that provides web services is going to OS block on > > > >> file reading (and writing) and on database access. Using threads is a > > > >> classic and easy way out that carries a lot of baggage. Windows has > > > >> had a way out of this for years with its asynch (or event) > > > >> notification set up through an OVERLAPPED structure. > > > > >> Lightttpd makes use of efficient event notification schemes like > > > >> kqueue and epoll. Apache only uses such schemes for listening and Keep- > > > >> Alives. > > > > >> No matter how careful one is with threads and processes there always > > > >> appears to be unexpected gotchas. Python has a notorious example, the > > > >> now fixed 'Beazly Effect' that affected the GIL. Also I don't think > > > >> there is a single experienced Python user that trusts the GIL. > > > > >> John Heenan

