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
> >>>
> >>>
> >>
> >>
> >>
> >>
> >
>