有什么方法可以处理dburi中的断开连接吗?

2024-04-27 04:44:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道有没有什么方法可以在数据库URI中设置pool_pre_ping,这样我就不应该接触实际的代码,而应该使用一些SELECT[1]类型的连接检查?你知道吗

在配置中,读取下一个变量:

SQLALCHEMY_DATABASE_URI = f'postgresql+psycopg2://{user}:{pw}@db:5432/{db}'

我想添加pool_pre_ping设置如下:

SQLALCHEMY_DATABASE_URI = f'postgresql+psycopg2://{user}:{pw}@db:5432/{db} [SOMETHING pool_pre_ping=True]'

需要设置pool\u pre\u ping背后的一个问题是,客户端偶尔会关闭db连接,而应用程序无法提供响应。在解决这个问题的最初原因之前,我应该防止断开连接。。在路上或其他。我在处理码头集装箱。你知道吗

如果你能给我一些建议,我非常感谢。谢谢:-)


Tags: 方法代码数据库dbsqlalchemypostgresqluriping
2条回答

最近在alchemy v2.4中实现了这一点。你知道吗

专门添加了SQLALCHEMY_ENGINE_OPTIONS配置键,使通过flask应用程序的create_engine配置不那么严格(docs)。所以在您的例子中,添加app.config["SQLALCHEMY_ENGINE_OPTIONS"] = {"pool_pre_ping": True}将实现您想要的。你知道吗

或者(同样是2.4+),您可以将关键字参数的dict传递给SQLAlchemy()构造函数(docs)的engine_options参数,例如SQLAlchemy(app, engine_options={"pool_pre_ping": True})等同于上述内容,只是这些值将与SQLALCHEMY_ENGINE_OPTIONS中定义的任何引擎设置合并并优先于这些设置。你知道吗

非常感谢!现在可以了:-)

我做了以下工作:

(我没有在URI中设置“pool\u pre\u ping”,但在代码中添加了一些行)

从flask\u sqlalchemy导入sqlalchemy作为\u NSQLAlc ... 你知道吗

类SQLAlchemy(\u NSQLAlc): def apply\池\默认值(self、app、options): 超级(SQLAlchemy,self)。应用\u池\u默认值(应用程序,选项) 选项[“pool\u pre\u ping”]=真

db=SQLAlchemy()

相关问题 更多 >