> Namely, if you deploy with Gunicorn a Pyramid + PostgreSQL app based on the standard cookiecutter, you will run into problems, because the connection to the DB can't be shared between the processes, so each process needs to have its own connection to the DB.
I forgot to mention...
This should not happen. Do you know which cookiecutter you used, and when? This should not happen in the most recent cookiecutter.
It also requires pyramid_tm, which will cleanup the connections at the end of the request lifecycle. If you decide to not use pyramid_tm, then you'll have to use a cleanup routine like this one when you grab the request. This was one the pattern in the pyramid cookiecutter, but it was taken out because pyramid_tm effectively does that itself.
The only way the connection pool sharing should be able to happen is if you grabbed a database connection before the fork - like during application setup, which would then require a call to Engine.dispose.
If you are not consciously grabbing a database connection before the fork, you should do a code audit to figure out where the first connection is being made and how it is recycled, as the last few versions of the cookiecutter do defend against this behavior.