gpt4 book ai didi

python - pyodbc:如何重试从 transient 错误中恢复?

转载 作者:行者123 更新时间:2023-11-28 20:38:10 27 4
gpt4 key购买 nike

我有一个托管在 Flask 上的 API。它在 Tornado 服务器后面运行。发生的情况是,有时对 UI 所做的更改不会反射(reflect)在数据库中。另外,我运行的一些脚本出现以下 3 个错误中的任何一个:

  1. pyodbc.Error: ('08S01', '[08S01] [Microsoft][ODBC SQL Server Driver]通信链接失败 (0) (SQLExecDirectW)')
  2. pyodbc.Error: ('01000', '[01000] [Microsoft][ODBC SQL Server 驱动程序][DBNETLIB]ConnectionWrite (send())。(10054) (SQLExecDirectW)')
  3. pyodbc.Error: ('01000', '[01000] [Microsoft][ODBC SQL Server 驱动程序][DBNETLIB]ConnectionRead (recv())。(10054) (SQLExecDirectW)')

这是我的 Flask API 代码片段:

class Type(Resource):

def put(self):
parser = reqparse.RequestParser()
parser.add_argument('id', type = int)
parser.add_argument('type', type = int)
args = parser.parse_args()

query = """
UPDATE myDb SET Type = ? WHERE Id = ?
"""

connection = pyodbc.connect(connectionString)
cursor = connection.cursor()
cursor.execute(query, [args['type'], args['id']])
connection.commit()
cursor.close()
connection.close()

api.add_resource(Type, '/type')

我可以在cursor.execute行添加任何重试逻辑吗?我不知道如何用 python 处理暂时性错误。请帮忙。

最佳答案

根据我的经验,我认为也许你可以尝试使用下面的代码来实现重试逻辑。

import time

retry_flag = True
retry_count = 0
while retry_flag and retry_count < 5:
try:
cursor.execute(query, [args['type'], args['id']])
retry_flag = False
except:
print "Retry after 1 sec"
retry_count = retry_count + 1
time.sleep(1)

希望有帮助。

关于python - pyodbc:如何重试从 transient 错误中恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41473137/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com