Graham Dumpleton
grahamd at dscpl.com.au
Tue Nov 28 06:05:03 EST 2006
On 28/11/2006, at 10:04 AM, Martijn Moeling wrote: > I emailed you guy's personally since you are the driving forces behind > mod_python (i think) and this is not a real subject for that mailing > list. I see no reason why anything you talk about needs to be handled off the mailing list, so have sent my response back there. > I just send in a proposed new Session.py as a RFC backed with some > documentation. > > I also found an today's article on the mailing list with subject: > [mod_python] Wiki for mod_python. Contributors welcome. > Which is about this subject, keeping the MySQLdb out as much as > possible > was one of my goals, but I do not see another option. There should be no reason for a MySQL session class to be within the mod_python session code file for it to work. The only thing you don't get from having it separate is the ability for it to be created underneath the Session.Session() call based on the value of PythonOption for setting the session type. Instead you would use: req.session = MySqlSession(req) The only place where having to do this would be a problem is if you are using mod_python.psp as it internally uses Session.Session(). It only does this though if req.session doesn't exist as an attribute. Thus, if you are using mod_python.psp you need to create your own handler which does: from mod_python import psp def handler(req): req.session = MySqlSession(req) return psp.handler(req) By assigning session instance to req.session, mod_python.psp will use it. You will need to have a recent version of mod_python for this to work though. In mod_python 3.3, the ability to use the Apache authentication handler phase properly means that creating sessions in the main content handler phase is probably not as a good an option as writing a proper authentication handler for the job. In that scenario, you wouldn't even need to wrap mod_python.psp as session creation would be in a separate handler anyway. > (yes I do: copy > Session.py to my app dir and not include it from mod_python right?) Making a copy of Session.py and modifying it is a bad idea as it is already out of date if you are using mod_python 3.2.10 or older as various changes have been made in code in mod_python 3.3. You will loose the benefit of these changes/fixes if you have your own copy based on an older version. > Storing the Sessions in an SQL database can be a huge advantage and I > think it should be in Session.py since it expands possibilities. > (think > of the multiple front end severs in my situation, and there are File, > DBM memory possibilities, so why not add MySQL (which is used by most > mod_python users anyway). With my current project I am preparing for > 1.000.000 pageviews per hour!! One apache server with mod_python > can not > handle that amount of users. (not all use sessions) > > Personally I think mod_python and MySQLdb should team up, I am an > experienced programmer, but all those newbie guys run into trouble > configuring the lot The topic of having SQL database backed sessions included as a standard part of mod_python has been discussed before and rejected. Even the sqlite version which I referred you to was rejected. The issue was that having dependencies on external packages was not desirable as it makes the development and testing more burdensome. This was even though sqlite itself doesn't require a big database system but can work direct out of the filesystem. If there is every to be database backed sessions included in mod_python as a standard feature, I'd suggest it is more likely to be code which uses the Apache 2.2 mod_dbd module in some way so that that stuff in Apache can be leveraged for the task of database connection management etc. Keep in mind that mod_python is all about trying to use what Apache provides as much as possible, rather than creating a separate universe and just using Apache as a hopping off point. > I would love to contribute to the wiki, I'll see into it over the next > few days. I have been a programmer devoted to Open Source since Linux > was half a kernel (I implemented large parts of the V4 TCP/IP stack). If you want to get involved in the wiki great. Adding the MySQLSession class as an example would be a good thing to add to the wiki and for the time being at least is probably the most appropriate place for it to go. > Can you help me getting into mod_python development? I am > interested in > adding useful features (like MySQLSession haha) The way the Apache software foundation works is that new developers on projects get commit access on the repository by way of invitation. They will get an invitation by demonstrating good knowledge of the package by helping out on the mailing lists by giving useful assistance to others. Finding bugs in the package and investigating it to the level of being able to provide a fix also helps. With the wiki now in place, contributing there would also show your abilities and knowledge and in conjunction with other things give confidence that providing you commit access to the source code would be the right thing to do. As a first step though, I would suggest you get yourself subscribed to the mod_python developers mailing list in addition to the standard user mailing list. I have never seen you post on the developers list so am assuming you aren't subscribed there at present. Use the mailing list to learn, and contribute as you can. If over time you give the core developers a good impression and when we are looking for extra developers, then you would be considered. Graham
|