So... in trunk we have an experimental solution to the session issue
proposed by Anthony. We allow disabling of session logic using routes.py.
routes_in = [('/welcome','/welcome',dict(web2py_disable_session=False)]
This solution many or many not stay in this form. We are testing it and
discussing it. Anyway, we find that the speed-up of disabling sessions on
my laptop is 0.15ms/request.
In comparison some recent optimizations in regex compiling (also in trunk
now to be release in web2py 2.1.0) was more like 0.35ms/request.
On Sunday, 2 September 2012 09:49:08 UTC-5, Anthony wrote:
>
> I think it'd be nice to have session created explicitly inside a "WITH"
>> statement block so that users create sessions only when they want. But I
>> don't know if it's feasible because I suspect sessions are created
>> automatically and passed into the exec environment, and it appears sessions
>> are used to keep track of a few things in web2py.
>>
>> In other words, the web2py's way is sessions are created by default and
>> optionally "forget". But it *might* be better if sessions are not created
>> by default and users are given an easy method to create sessions.
>>
>
> Right, there is a small performance hit given that web2py automatically
> loads the session at the start of every request. You also suggested,
> though, that the application logic for turning off sessions when not needed
> would somehow be more complex and difficult than it would be if instead you
> had to turn on sessions when you need them, and it's not clear to me that
> that is the case. In web2py, to simulate the latter, I think you can just
> do session.forget(response) at the beginning of every request (early in
> first model file), and then do session.connect(request, response) at some
> later point in the code when you do need to read/write the session. So,
> your application logic shouldn't really need to be any more complex in
> web2py.
>
> Also, note, web2py does not write to the session file on requests in which
> the session does not change, so there is no reason to forget/unlock the
> session merely to avoid unnecessary file writing. The only reason to unlock
> the session file is to prevent one request from a given user from blocking
> other concurrent requests from that same user -- and this would generally
> only be an issue if the user is loading a page with multiple simultaneous
> Ajax requests that don't use the session. Note, if the multiple Ajax
> requests actually do need the session, then you do in fact want them to
> block each other because otherwise you could introduce race conditions with
> the session.
>
> Anthony
>
--