Python 管理Gunicorn员工的Postgres连接的正确方法

Python 管理Gunicorn员工的Postgres连接的正确方法,python,database,postgresql,psycopg2,Python,Database,Postgresql,Psycopg2,我有一个简单的烧瓶应用程序在Gunicorn中运行。我当前的设计有一个database.pyhelper文件,它可以在工作程序启动时建立连接(简化为发布): 从帮助程序导入数据库帮助程序 db=DatabaseHelper() app=烧瓶(名称) ... 在DatabaseHelper.py中: 类数据库助手: 连接=无 定义初始化(自): self.connection=psycopg2.connect(…) def运行查询(自我,查询): cursor=self.connection.c

我有一个简单的烧瓶应用程序在Gunicorn中运行。我当前的设计有一个
database.py
helper文件,它可以在工作程序启动时建立连接(简化为发布):

从帮助程序导入数据库帮助程序
db=DatabaseHelper()
app=烧瓶(名称)
...
DatabaseHelper.py
中:

类数据库助手:
连接=无
定义初始化(自):
self.connection=psycopg2.connect(…)
def运行查询(自我,查询):
cursor=self.connection.cursor()
cursor.execute(查询)
结果=cursor.fetchall()
cursor.close()
返回结果
因此,每个worker spawn将有一个到数据库的连接,从该数据库运行查询。问题是,我遇到了连接超时的问题,出现了
psycopg2.errors.IdleInTransactionSessionTimeout
,这在网站流量低的情况下是有意义的

我本来打算为
DatabaseHelper.py
编写一个小包装器,捕捉超时错误并重新连接到数据库,但这感觉……太草率了。有没有更好的方法来管理与数据库的连接?我读过关于连接池的文章,但我不知道这如何解决我的问题(连接仍然会超时)