sqlalchemy pymssql“对等连接重置”恢复

Posted

技术标签:

【中文标题】sqlalchemy pymssql“对等连接重置”恢复【英文标题】:sqlalchemy pymssql "connection reset by peer" recovery 【发布时间】:2011-02-23 18:47:29 【问题描述】:

我正在运行一个cherrypy webservice,想知道最好的选择是从“对等连接重置”中恢复,以便通过sqlalchemy 进行pymssql 连接。现在我必须重新启动网络服务。

【问题讨论】:

【参考方案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

【讨论】:

以上是关于sqlalchemy pymssql“对等连接重置”恢复的主要内容,如果未能解决你的问题,请参考以下文章

Pika 连接丢失错误:pika.exceptions.StreamLostError:流连接丢失:ConnectionResetError(104,'对等连接重置')

Sqlalchemy + pymssql 连接失败

nginx tomcat7 错误:-“从上游读取响应标头时,recv() 失败(104:对等连接重置)”

AWS ElasticBeanstalk NodeJS-502错误:从上游读取响应头时,recv()失败(104:对等连接重置)

使用 pymssql 的 Python/Flask/sqlAlchemy 环境中的 Adaptive Server 连接失败错误

使用 SQL Alchemy 和 pymssql 指定故障转移伙伴