I hope there will be some nice examples and documentation to go with
this new session package/implementation.

On Mon, 2005-06-13 at 08:53 -0400, Jim Gallacher wrote:
> David Fraser wrote:
> > Hi Nicolas, Jim
> > 
> > PythonSessionCreate as suggested is nice for flexibility, but scary for 
> > non-coders - I like Jim's multiple options for that reason
> 
> I would argue that PythonSessionCreate is less flexible for users and 
> admins. It requires a knowledge of the mod_python package structure 
> (Session.FileSession), which will then get hard coded into the apache 
> configuration files. If we decide in the future to split the Session 
> classes into separate files, we'll break all existing configurations.
> 
> PythonSessionOption will likely only be used to override the existing 
> defaults defined in the code, so most configs will look like this:
> 
> PythonSessionOption session DbmSession
> PythonSessionOption timeout 28800
> 
> I'll grant you that the config file will become cluttered with a larger 
> number of PythonSessionOption directives for more a complicated setup, 
> but the same problem exists for PythonSessionCreate. eg.
> 
> PythonSessionCreate 
> "Session.FileSession(session_directory='/var/lib/mod_python/sess',timeout=14400,secret='howdy',lock=1,fast_cleanup=1,verify_cleanup=1,graceperiod=20,this_string_is_hard_read=True)"
> 
> Using python code in the config file means the admin needs to worry 
> about proper quoting of the string. We should not assume that the admin 
> will be a programmer. I can imagine the mailing list questions, and 
> Graham already spends enough time answering questions. :)
> 
> I also think that parsing the PythonSessionCreate string will turn out 
> to be a difficult task to do in a really robust way.
> 
> And the real reason for using PythonSessionOptions? Through the magic of 
> cut and paste programming I was able to adapt PythonOptions/get_options 
> in about 5 minutes with high confidence it would work the first time. It 
> did. :)
> 
> As far as refactoring Session.py, I've already done this to some extent 
> in my attempts to track down the memory leak with the req_get_session() 
> method - not a big job. Most of the config handling code would be added 
> to BaseSession.__init__(). My personal preference if we refactor 
> Session.py is to go all the way and split it into a package right now. 
> We are making enough changes in the way sessions are used that I think 
> it is the correct time, rather than half now and half later. 
> mod_python.session2 anyone? Session.py becomes wrapper around the new 
> package structure for backwards compatability, and coders using release 
>  >= 3.2.0 will use the PythonSessionOption, req.get_session() combo for 
> their new code.
> 
> Regards,
> Jim
> 
> > David
> > 
> > Nicolas Lehuen wrote:
> > 
> >> Hi Jim,
> >>
> >> Why not have a single 'PythonSessionCreate' option which contains the
> >> line of code that should be evaled to create the session ?
> >>
> >> Example :
> >>
> >> PythonSessionCreate
> >> "Session.FileSession(session_directory='/var/lib/mod_python/sess',timeout=14400,lock=1)"
> >>  
> >>
> >>
> >> The cost of eval could be brought down by precompiling the option
> >> string to a code object and running the code object in precompiled
> >> form.
> >>
> >> This seems a bit more flexible to me and won't force you to refactor
> >> the Session.py code.
> >>
> >> Regards,
> >> Nicolas
> >>
> >> 2005/6/12, Jim Gallacher <[EMAIL PROTECTED]>:
> >>  
> >>
> >>> I've created a new apache directive called PythonSessionOption. This
> >>> would be used to configure session handling in the apache config file.
> >>> This data is accessed with a new request method, 
> >>> req.get_session_options().
> >>>
> >>> Although we could use the PythonOption directive instead of creating a
> >>> new one, I believe it's better to keep the session config data separate
> >>> so we don't need to worry about collisions with current user code or
> >>> configuration.
> >>>
> >>> Typical Usage
> >>> -------------
> >>>
> >>> In a test script mptest.py
> >>>
> >>> def handler(req)
> >>>     opts = req.get_session_options()
> >>>     for k in sess_conf:
> >>>         req.write('%s: %s' % (k,opts[k])
> >>>
> >>> In Session.FileSession:
> >>>     __init__(self,req,sid):
> >>>         opts = req.get_session_options()
> >>>         timeout = int(opts.get('timeout', DFT_TIMEOUT))
> >>>
> >>> In an Apache config file:
> >>>
> >>> <VirtualHost 192.168.1.12:80>
> >>>         ServerAdmin [EMAIL PROTECTED]
> >>>         ServerName example.com
> >>>         DocumentRoot /var/www/
> >>>
> >>>         PythonSessionOption session FileSession
> >>>         PythonSessionOption session_directory /var/lib/mod_python/sess
> >>>
> >>>         PythonSessionOption timeout 14400
> >>>         PythonSessionOption lock 1
> >>>
> >>>         ...
> >>> </VirtualHost>
> >>>
> >>> If there are no objections I'll commit the code. I have not refactored
> >>> Sessions.py to use the new configuration scheme just yet.
> >>>
> >>> Regards,
> >>> Jim
> >>>
> >>>   
> >>
> >>
> >>  
> >>
> > 
> 

Reply via email to