Python 在将池连接交给应用程序代码之前,如何检查SQLAlchemy中的池连接?
由于各种原因,我们有一个稍微不可靠的数据库服务器,因此有时我的应用程序使用的数据库连接会从它下面消失。这些连接是SQLAlchemy 0.6.5与Pylons 1.0 web运行时中的PostgreSQL db的连接 我想要的是某种方法来捕获其中的大部分,而不会出现用户可见的错误;理想情况下,在从引擎返回连接之前,我会在池级别测试连接。我控制引擎的创建,所以我没事Python 在将池连接交给应用程序代码之前,如何检查SQLAlchemy中的池连接?,python,sqlalchemy,pylons,Python,Sqlalchemy,Pylons,由于各种原因,我们有一个稍微不可靠的数据库服务器,因此有时我的应用程序使用的数据库连接会从它下面消失。这些连接是SQLAlchemy 0.6.5与Pylons 1.0 web运行时中的PostgreSQL db的连接 我想要的是某种方法来捕获其中的大部分,而不会出现用户可见的错误;理想情况下,在从引擎返回连接之前,我会在池级别测试连接。我控制引擎的创建,所以我没事 实现这一目标的最佳(最具自动化/最干净)方法是什么?我意识到在检查和使用之间总是存在连接失效的可能性,但在这种环境中这种情况非常罕见
实现这一目标的最佳(最具自动化/最干净)方法是什么?我意识到在检查和使用之间总是存在连接失效的可能性,但在这种环境中这种情况非常罕见,因此我并不担心。您可以使用池侦听器:
class ConnectionChecker(sqlalchemy.interfaces.PoolListener):
def checkout(self, dbapi_con, con_record, con_proxy):
if not is_valid_connection(dbapi_con):
# a new connection will be used
raise sqlalchemy.exc.DisconnectionError
留给您的是如何为您的用例实现is\u valid\u连接