sqlalchemy pymssql“通过同行重置连接”恢复

时间:2011-02-23 18:47:30

标签: sqlalchemy cherrypy pymssql

我正在运行一个讨厌的网络服务,并想知道通过sqlalchemy从pymssql连接的“通过对等重置连接”恢复的最佳选择是什么。现在我必须重新启动web服务。

1 个答案:

答案 0 :(得分:1)

这似乎是pymssql的is_disconnect()方法中的一个错误,它忽略了TCP连接和超时失败,使游标处于不满状态;见http://www.sqlalchemy.org/trac/ticket/2172。现在,您可以将其修补为:

from sqlalchemy.dialects.mssql import pymssql

def is_disconnect(self, e):
    for msg in (
        "20003",
        "20004",
        "Error 10054",
        "Not connected to any MS SQL server",
        "Connection is closed"
        ):
        if msg in str(e):
            return True
    else:
        return False

pymssql.MSDialect_pymssql.is_disconnect = is_disconnect