Upstart vs Supervisord to manage WSGI processes
I would suggest the use of supervisord. In my experience, it is friendlier and generally a smoother experience than runit or the venerable daemontools. Upstart is designed to replace the equally-venerable init
process, while supervisord is specifically for managing things like WSGI, FastCGI, and the like. It is also pretty well-documented.
Because it is targeted at these types of scenarios, supervisord provides facilities for starting a specific number of processes, retry limits, custom signals, and various other useful bits (it even includes an XML-RPC interface.) Upstart provides the ability to interface with DBus, but this is unlikely in your scenario.