Ian Bicking: the old part of his blog


mod_python doesn't seem like a very good idea in a multi-user situation, because the interpreter is persistent between requests. At the same time, those requests may be going to two different users. In that way one user could corrupt or disrupt another user's interpreter. Also, since it's a single process, you only have one level of permissions.

Ideally, of course, you would run one Apache instance for each user. This is actually not a bad idea, as each Apache instance can run under that user's account, with configuration separated out. But there's also problems. And maybe the overhead is less with the new Apache 2 threaded model, but then you lose the good parts of keeping interpreters partitioned.

Also, mod_python doesn't work well with Apache 1.3. In my experience, it's not a big deal to upgrade, but people are extremely reluctant to do so. Really they should have called it 1.4, then people would be much less stressed about it -- there's substantial changes, but Apache's front-facing features have remained extremely stable over the releases. But I digress.

As is often the case, in a heterogeneous environment you can solve problems more completely by not reusing components (like Apache's worker process model). Obviously there are also problems with this. E.g., FastCGI is nicely partitioned, but it's also a leaf in the system, where mod_python can interject itself at different points in a site's system, providing consistency in a heterogeneous system.
Comment on An Ideal Python Web Programming Environment
by Ian Bicking