在发明者量化API文档中发现了一种特别有趣的重试写法
发明者量化API文档 https://www.fmz.com/api
感觉这种写法特别方便又特别有意思,奈何fmz并不开源,于是自己写了一版,重试间隔、重试次数,我这里重试通过判断返回值是否为None,当然也可以通过捕捉异常来决定是否重试。
关于__new__的用法可以参考 https://blog.csdn.net/sj2050/article/details/81172022
import time
class _C(object):
# delay重试间隔 retry重试次数
def __new__(cls, func, *args, delay=3, retry=3):
while retry:
res = func(*args)
if res != None:
return res
else:
retry -= 1
time.sleep(delay)
def test_1(a, b):
return a + b
def test_2():
return 3
obj_1 = _C(test_1, 1, 2, delay=5)
obj_2 = _C(test_2)
print(obj_1, obj_2)