[mod_python] MySQL Session implementation?

Robert Synnott rsynnott at gmail.com
Tue Jun 20 18:45:27 EDT 2006


On 6/20/06, Nicolas Lehuen <nicolas at lehuen.com> wrote:
> 2006/6/20, Sébastien Arnaud <arnaudsj at emedialibrary.org>:
> > Thanks Jim, it looks like SQLiteSession is a good start for what I
> > want to do.
> >
> > If I am successful I will share with everybody whatever I come up with.
> >
> > Thanks!
> >
> > Sébastien
>
> Hi Sébastien,
>
> One important thing not to overlook if you are going to implement a
> MySQLSession class is database connection pooling.
>
> In SQLiteSession, I deliberately did not handle this issue because it
> is written in the documentation that connections created in a thread
> should not be reused in another thread (see
> http://www.sqlite.org/cvstrac/wiki?p=MultiThreading : "# On some
> operating systems, a database connection should always be used in the
> same thread in which it was originally created. ").
>
> As a result, each and every session load or saved forces a database
> connection, which means opening files, reading data structures
> (indexes and tables) and syncing them when the connection is closed.
> No wonder then that SQLiteSession is slower than FileSession...
>
> As a minimum effort, I could have used thread local variables to make
> sure that only one connection is opened by thread, but thread local
> variables are a Python 2.4 feature and we need to support Python 2.3.
> So I've just let it as is for the moment, since anyway we decided to
> put this code in the sandbox until better times.
>
> With MySQL or other DBMS, however, connection pooling can and should
> be used for better performances. Writing a connection pool is not very
> difficult, but writing it in a stable and resilient way, both
> thread-safe and multi-process safe, is a little bit more effort.
>
> One thing to consider is to try to build the connection pool and the
> session management code in two different, orthogonal modules, so that
> one day we'll be able to release the connection pool for general
> purpose.
>
> Regards,
> Nicolas
>
> _______________________________________________
> Mod_python mailing list
> Mod_python at modpython.org
> http://mailman.modpython.org/mailman/listinfo/mod_python
>

Of course, if you're running non-threaded apache and will be doing so
for the forseeable future, things get a lot easier.
Rob



More information about the Mod_python mailing list