Thanks. This is helpful. On Thursday, March 17, 2011 1:14:22 PM UTC-4, Jonathan Lundell wrote:
> On Mar 17, 2011, at 9:45 AM, Anthony wrote: > > On Thursday, March 17, 2011 11:17:17 AM UTC-4, Jonathan Lundell wrote: >> >> On Mar 17, 2011, at 7:40 AM, Anthony wrote: >> >> In the book under "Efficiency Tricks" it says: >> >> Set session.forget() in all controllers and/or functions that do not >> change the session. >> >> Does this new change make it unnecessary to bother calling >> session.forget() in most cases because sessions are no longer saved when >> empty or not modified? >> >> There's at least one reason to call session.forget(): it unlocks the >> session file, allowing other requests in the same session to proceed. >> >> This won't be useful in all cases, since there may not *be* other requests >> pending. But it's a very lightweight call, so it doesn't do any harm. >> > > To unlock the session file, don't you have to call session.forget(request) > or session._unlock(request)? Is plain session.forget() (with no arguments) > still useful? > > > session.forget(response), yes. > > With no arguments, no, offhand I think it's not useful, unless perhaps the > session actually got changed, in which case calling forget would > (effectively) discard the changes. > > > It would be helpful to get an understanding of exactly when session files > are created, locked, written to, and unlocked as well as the exact effects > and use cases for session.forget(), session.forget(request), and > session._unlock(request), particularly in light of the recent change in > trunk. > > > I agree, though I think it should be in terms of an API spec rather than a > description of how it happens to work now, which might lock in accidental > behavior. > > At any rate, if a session file doesn't exist, it gets created lazily, at > the first point at which it would have to be written. So a series of > requests that never changes the session object will never create a session > file. However, since both auth and forms keep state in the session, a > session will be created when an auth form is used. >

