sql-server - 操作错误:现有连接被远程主机强行关闭。(10054)
问题描述
我收到此操作错误,可能是在应用程序长时间不活动或空闲时定期出现。刷新页面时它会消失。我在 Formhandlers 和 gramex 的 DbAuth 中使用 mssql pyodbc 连接字符串(“mssql+pyodbc:///?odbc_connect= ...”)
如何在 gramex 中保持连接有效?
解决方案
添加pool_pre_ping
和pool_recycle
参数。
pool_pre_ping
每次从池中签出连接时,通常会发出等效于“SELECT 1”的 SQL;如果出现一个被检测为“断开”情况的错误,连接将立即被回收。阅读更多pool_recycle
防止池使用已超过特定年龄的特定连接。阅读更多
例如:engine = create_engine(connection_string, encoding='utf-8', pool_pre_ping=True, pool_recycle=3600)
或者,您可以将这些参数添加到 FormHandler 中gramex.yaml
。这仅对带有连接字符串的第一个 FormHandler 是必需的。
kwargs:
url: ...
table: ...
pool_pre_ping: True
pool_recycle: 60
推荐阅读
- json - 如何测量 JSON 属性读取性能?
- javascript - 使用 Emailjs 时,我没有在收件箱中收到表单输入信息
- sas - 如何在 SAS 中按多个组添加一个行号,其中一个变量按降序排列?
- python - 如何根据 Django admin list_display 中的模型值从自定义数据库查找中返回值?
- angular - Angular 8 有没有办法在每次击键时停止触发按钮上的 [disabled]="somefunc()" 功能?
- php - 如何生成一个随机数数组并使用 php 对该数组进行排序?
- flutter - Flutter - NumberFormat.compactCurrency() 的倒数
- html - 在 XSLT 中将后代标签显示为标签
- flutter - Flutter - 如何在流构建器中使用 await?
- flutter - Flutter - 如何在不使用 SteamBuilder 的情况下使用从 FireStore 检索到的数据?