Running PyBlosxom through SCGI
Out of curiosity, ran the Apache Benchmark program ab
on the plain CGI installation of PyBlosxom on my little server (-n 100 -c 10
), and got around 1.5 requests/second. Decided to give SCGI a try, and got some better results.
Went about this based on what I had read in Deploying TurboGears with Lighttpd and SCGI. Tried Lighttpd at first, and it mostly worked, but I've got an Apache setup right now, so wanted to stick with that for the moment (and it seems a bit quicker anyhow). Basically started by loading flup with easy_install.
easy_install flup
Copied the config.py
and wsgi_app.py
files from the PyBlosxom distribution
into a directory, and added this little script into that same directory:
#!/usr/bin/env python import sys from flup.server.scgi_fork import WSGIServer from wsgi_app import application server = WSGIServer(application, scriptName='/blog', bindAddress=('127.0.0.1', 8040) ) ret = server.run() sys.exit(ret and 42 or 0)
Installed mod_scgi built for Apache2 and added two lines to the config
LoadModule scgi_module libexec/apache2/mod_scgi.so
SCGIMount /blog 127.0.0.1:8040
Notice how the scriptName
and bindAddress
parameters in the Python code
are matched in the SCGIMount
Apache directive. With this setup, running the same
ab
benchmark yields about 10 to 15 requests/second - not too bad. Running the threaded SCGI
server (remove the _fork
from the first import line) wasn't as good, only 3 or 8 requests/second.
The setup seems a bit shaky in that the benchmark values seem to keep decreasing with every run, especially in the threaded mode. So there may be some problems in my setup or in flup/scgi/pyblosxom_wsgi.
Even if it was working fine, SCGI is probably overkill for
running PyBlosxom when you're not expecting a lot of traffic. And if you were, you'd probably
run it with --static
to generate static pages. But it was a reasonable
thing to fool with for the day when you want to run a more dynamic WSGI app.