【问题标题】:Operational Error: An Existing connection was forcibly closed by the remote host. (10054)操作错误:现有连接被远程主机强行关闭。 (10054)
【发布时间】:2021-06-09 09:10:59
【问题描述】:

我收到此操作错误,可能是在应用程序长时间不活动或空闲时定期出现的。刷新页面时它会消失。我在 Formhandlers 和 gramex 的 DbAuth 中使用 mssql pyodbc 连接字符串(“mssql+pyodbc:///?odbc_connect= ...”)

如何在 gramex 中保持连接有效?

Screenshot of error

【问题讨论】:

  • 您能否详细说明您的问题?你哪里有这个问题?什么编程语言?你想达到什么目的?你能把你的截图也放在这里吗?

标签: sql-server pyodbc gramex


【解决方案1】:

添加pool_pre_pingpool_recycle参数。

  • 每次从池中签出连接时,pool_pre_ping 通常会发出等同于“SELECT 1”的 SQL;如果出现一个被检测为“断开”情况的错误,连接将立即被回收。 Read more
  • pool_recycle 防止池使用已超过特定年龄的特定连接。 Read more

例如:engine = create_engine(connection_string, encoding='utf-8', pool_pre_ping=True, pool_recycle=3600)

或者,您可以在gramex.yaml 中为 FormHandler 添加这些参数。这仅对带有连接字符串的第一个 FormHandler 是必需的。

kwargs:
 url: ...
 table: ...
 pool_pre_ping: True
 pool_recycle: 60

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 2021-02-02
    • 2016-10-20
    • 2012-02-07
    • 1970-01-01
    • 2011-06-06
    • 2020-04-20
    相关资源
    最近更新 更多