我想知道有没有什么方法可以在数据库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连接,而应用程序无法提供响应。在解决这个问题的最初原因之前,我应该防止断开连接。。在路上或其他。我在处理码头集装箱。你知道吗
如果你能给我一些建议,我非常感谢。谢谢:-)
最近在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()
相关问题 更多 >
编程相关推荐