Make runfcgi fail when database connection is open before fork
FastCGI handler in prefork mode first imports every application, then forks. If any application during import opens connection to database, open connection is inherited by all of child processes; open db connection cannot be shared between processes, and if one process sends a request, another can receive a reply; also, if one process closes it, others have a desynchronized database handle. See: * http://stackoverflow.com/questions/1573579/psycopg2-disconnects-from-server * http://stackoverflow.com/questions/393637/django-fastcgi-randomly-raising-operationalerror * http://code.djangoproject.com/ticket/13215 * http://groups.google.com/group/django-users/browse_thread/thread/2c7421cdb9b99e48 If you put this snippet in your project-level __init__.py, then running manage.py runfcgi will fail loudly if the database connection is open in the parent process. This will happen only when you provide debug=true option to runfcgi to avoid monkey-patching code that runs in production mode.
- fcgi
- prefork
- flup