我有一个第三方 API 套件模块 (bitmex)。我的代码中有很多调用这个模块的方法。问题是这个 API-kit 经常给我一个错误:
HTTPServiceUnavailable
我了解此错误是由于 BitMEX 服务器不稳定造成的。但如果它发生在交易时段,它会彻底破坏我的交易。
这是在我的代码中调用 bitmex 模块的示例:
balance = bitmex.User.User_getMargin(currency='XBt').result()
当然,我试图解决这个问题。这是我想出的功能:
def bitmex_error_protection(request):
retries = 0
while True:
try:
result = eval(request)
except bravado.exception.HTTPServiceUnavailable:
time.sleep(5)
retries += 1
if retries > 5:
raise Exception("The servers are overloaded, the max number of attempts has been reached")
else:
return result
正如你所理解的,这个函数的意思是我以打包的形式(在一个字符串对象中)向它传递一个请求。之后,会出现“While True”,直到请求执行且没有此错误。
这是我现在如何进行这些调用的示例:
balance = bitmex_error_protection("bitmex.User.User_getMargin(currency='XBt').result()")
这个解决方案有效,但我知道它远非优雅并且依赖拐杖。
如果您提出一些想法或完全替代的方法来解决这个问题,我会很高兴,我不需要使用字符串对象。
也许为此,我需要创建一个类?