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
|