Python 3.x 创建优雅的解决方案以避免HTTPServiceUnavailable

Python 3.x 创建优雅的解决方案以避免HTTPServiceUnavailable,python-3.x,function,exception,error-handling,bitmex,Python 3.x,Function,Exception,Error Handling,Bitmex,我有一个第三方API工具包模块(bitmex)。在我的代码中有许多对该模块的调用。问题是这个API工具包经常给我一个错误: HTTPServiceUnavailable 我知道此错误是由于BitMEX服务器不稳定造成的。 但如果它发生在交易时段,它会完全破坏我的交易 下面是在我的代码中调用bitmex模块的示例: balance = bitmex.User.User_getMargin(currency='XBt').result() 当然,我试图解决这个问题。 以下是我提出的函数: def

我有一个第三方API工具包模块(bitmex)。在我的代码中有许多对该模块的调用。问题是这个API工具包经常给我一个错误:

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()")
这个解决方案是可行的,但我知道它远不是优雅的,而是依靠拐杖

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

也许为了这个,我需要创建一个类