2

我有一个第三方 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()")

这个解决方案有效,但我知道它远非优雅并且依赖拐杖。

如果您提出一些想法或完全替代的方法来解决这个问题,我会很高兴,我不需要使用字符串对象。

也许为此,我需要创建一个类?

4

0 回答 0