MCPcopy Index your code
hub / github.com/Tencent/CodeAnalysis / RetryDogServer

Class RetryDogServer

client/util/api/dogserver.py:21–56  ·  view source on GitHub ↗

访问CodeDog Server的API重试类

Source from the content-addressed store, hash-verified

19
20
21class RetryDogServer(object):
22 """
23 访问CodeDog Server的API重试类
24 """
25 def __init__(self, server_url, token):
26 self._server_url = server_url
27 self._token = token
28
29 def __retry_on_error(self, error, method_name):
30 """
31 失败重试函数
32 :param error:
33 :return:
34 """
35 # 不需要重试的方法
36 if method_name in ["update_task_progress"]:
37 raise error
38 err_msg = str(error)
39 # 遇到以下错误,server可能正在升级,需要1分钟左右的时间,因此重试间隔增加30s(加上原来的5s,一共35s,至少会重试2次,可以满足1分钟的server更新)
40 # 400 - 服务器不理解请求的语法
41 # 500 -(服务器内部错误)服务器遇到错误,无法完成请求
42 if "Error[400]" in err_msg or "Error[500]" in err_msg:
43 logger.info("服务器可能正在升级,等待30s后重试...")
44 time.sleep(30)
45 # 重试直到成功为止
46 return
47
48 def get_api_server(self, retry_times=-1):
49 """根据实际情况获取api server对象
50
51 :param retry_times: 异常重试次数,默认为-1,即一直重试直到成功
52 :param token: api访问token
53 :return: api server对象
54 """
55 api_server = CodeDogApiServer(self._token, self._server_url)
56 return SyncWrapper(Retry(server=api_server, on_error=self.__retry_on_error, total=retry_times))

Callers 6

update_task_progressMethod · 0.90
runMethod · 0.90
__init__Method · 0.90
load_toolsMethod · 0.90
runMethod · 0.90
runMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected