为什么我的瓶装ErrorHandler无法处理503

时间:2014-08-10 21:14:47

标签: python amazon-web-services amazon-product-api bottlenose

我得到了503。 根据bottlenose的说明,我需要按照说明添加error_handler。 在说明书中我放置了函数:

def error_handler(err):
    ex = err['exception']
    if isinstance(ex, HTTPError) and ex.code == 503:
        time.sleep(random.expovariate(0.1))
        return True

说明中的示例说明使用此行:

amazon = bottlenose.Amazon(ErrorHandler=error_handler)

我有这个:

amazon = bottlenose.Amazon(AWSAccessKeyId=ACCESS_KEY_ID, AWSSecretAccessKey = SECRET_KEY,AssociateTag = ASSOC_TAG)

我尝试了多种方式添加选项,例如:

amazon = bottlenose.Amazon(AWSAccessKeyId=ACCESS_KEY_ID, AWSSecretAccessKey = SECRET_KEY,AssociateTag = ASSOC_TAG,ErrorHandler=error_handler)

但我仍然得到了503。我认为我没有把它做对。 我希望有人能告诉我我错过了哪里。 谢谢

1 个答案:

答案 0 :(得分:0)

您提交请求的速度过快吗?你需要放慢速度。每秒一个请求是一个很好的速度。

亚马逊商品广告API会在三个类别中返回错误,以便您轻松确定如何最好地处理问题:

  • 2XX错误是由请求中的错误引起的。例如,你的 请求可能缺少必需参数。中的错误消息 该回复清楚地表明了什么是错误的。
  • 4XX错误是非暂时性错误。收到此错误后, 重新提交请求。
  • 5XX错误是反映内部错误的瞬态错误 亚马逊。 503错误意味着您也在提交请求 很快,您的请求受到限制。如果是这种情况, 您需要将请求速率降低到每秒一个请求。