I have a Django app running on Windows (via Apache + mod_wsgi) that's CPU-bound. But Apache on Windows only does MPM (multi-thread) workers, not prefork (multi-process workers), and a single Python interpreter won't take advantage of multiple CPUs.
I would switch to FastCGI, but that requires Flup, which is not supported on Windows.
The only solution I've come up with so far is to start multiple Django instances, then use Apache load-balancing to distribute the requests. That works fine so long as I start the Django instances in command windows, but I can't seem to figure out how to set up multiple Django instances as windows services (so that I get them to start automatically when the system starts).
Has anyone come up with a strategy to get a Django-based site to use multiple CPUs on a Windows server?