The problem is only if have two http request from the same client in
the same session

A arrives loads session and unlocks
B arrives loads session and unlocks
A change session and saves it
B changes session and saves it

Nothing breaks but B never sees changes made by A and they are
overwritten by B.
With locks

A arrives loads session
B arrives and waits
A change session and saves it
B loads session (with changes made by A)
B changes session and saves it


On Aug 25, 3:52 pm, Jonathan Lundell <jlund...@pobox.com> wrote:
> On Aug 25, 2010, at 1:41 PM, mdipierro wrote:
>
>
>
> > call
>
> > session._unlock()
>
> > if you do not need session locking
>
> If you do that (without calling session.forget), what will happen in 
> _try_store_on_disk when cPickle.dump(dict(self), response.session_file) is 
> called with a None file argument? Or is cPickle.dump cool with that? Or am I 
> misreading the logic?
>
>
>
> > On Aug 25, 11:38 am, Phyo Arkar <phyo.arkarl...@gmail.com> wrote:
> >> Yes may be session was locked , thats why
> >> session.current=processing_path not working
>
> >> But then again , while processing files i try opening separate page ,
> >> to other controller , it was waited till the first (file Crawler) page
> >> finished parsing.
>
> >> ok i will make a separate thread about this.
>
> >> On 8/25/10, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> >>> On Aug 25, 11:00 am, Phyo Arkar <phyo.arkarl...@gmail.com> 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 <pierre.thibau...@gmail.com> 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 <johnmhee...@gmail.com> 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

Reply via email to