Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在将池连接交给应用程序代码之前,如何检查SQLAlchemy中的池连接?_Python_Sqlalchemy_Pylons - Fatal编程技术网

Python 在将池连接交给应用程序代码之前,如何检查SQLAlchemy中的池连接?

Python 在将池连接交给应用程序代码之前,如何检查SQLAlchemy中的池连接?,python,sqlalchemy,pylons,Python,Sqlalchemy,Pylons,由于各种原因,我们有一个稍微不可靠的数据库服务器,因此有时我的应用程序使用的数据库连接会从它下面消失。这些连接是SQLAlchemy 0.6.5与Pylons 1.0 web运行时中的PostgreSQL db的连接 我想要的是某种方法来捕获其中的大部分,而不会出现用户可见的错误;理想情况下,在从引擎返回连接之前,我会在池级别测试连接。我控制引擎的创建,所以我没事 实现这一目标的最佳(最具自动化/最干净)方法是什么?我意识到在检查和使用之间总是存在连接失效的可能性,但在这种环境中这种情况非常罕见

由于各种原因,我们有一个稍微不可靠的数据库服务器,因此有时我的应用程序使用的数据库连接会从它下面消失。这些连接是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连接