|
Norman Tindall
NormanTindall at zdisk.net
Fri Aug 11 03:23:36 EDT 2006
Hello Jim,
Yesterday i realized what i saw in BaseSession class and i
think it is terrible.
def lock(self):
if self._lock:
_apache._global_lock(self._req.server, self._sid)
self._locked = 1
self._req.register_cleanup(unlock_session_cleanup, self)
Attention to last line of fuction "self._req.register_cleanup(unlock_session_cleanup, self)"
so the unlock of session happens when last byte of a request sent to
client and reqest object is to be destroyed.
And what if i write in handler something like this:
for x in range(100):
time.sleep(1)
req.write(str(x) +" "+ str(sess._locked) + "<BR>",1)
Session will be locked for a 100 seconds!
Well there may be a blocking timeout but i don`n know how
How parallel thread handle this situation with 100 sec session
blocking.
I think it SHOULD be added to documentation that after all
manipulation with session data is made you MUST unlock it
explicit.
For example in my handler i can unlock even before headers is sent
to client - and it is much more faster than 100 sec.
--
Best regards,
Norman mailto:NormanTindall at zdisk.net
|