【问题标题】:How to continue a for loop with a 504 Gateway Timeout error response from an API?如何使用来自 API 的 504 Gateway Timeout 错误响应继续 for 循环?
【发布时间】:2017-06-08 20:34:23
【问题描述】:

我正在使用一个名为 lob 的包来标准化我拥有的地址数据集。在运行了几千个地址后,我收到了 504 网关错误。来自 Lob 的响应错误如下:

.......Traceback (most recent call last):
  File "verify_modified_v2.py", line 82, in <module>
    zip_code=row['zip_code'],
  File "C:\Users\******\Anaconda2\lib\site-packages\lob\resource.py", line 123, in create
    response = requestor.request('post', cls.endpoint, params)
  File "C:\Users\******\Anaconda2\lib\site-packages\lob\api_requestor.py", line 84, in request
    requests.post(lob.api_base + url, auth=(self.api_key, ''), data=data, files=files, headers=headers)
  File "C:\Users\******\Anaconda2\lib\site-packages\lob\api_requestor.py", line 27, in parse_response
    resp.content, resp.status_code, resp)
lob.error.APIConnectionError: {
    "error": {
        "message": "GATEWAY_TIMEOUT",
        "status_code": 504
    }
}

我已尝试排除此错误,以便我的代码可以反复联系 lob,直到它可以通过而没有网关错误:

for idx, row in enumerate(input_csv):
        try:
            verifiedAddress = lob.USVerification.create(
                primary_line=row['primary_line'],
                secondary_line=row['secondary_line'],
                city=row['city'],
                state=row['state'],
                zip_code=row['zip_code'],
            )

            if verifiedAddress.deliverability in success_deliverabilities:
                success_csv.writerow({
                    'primary_line': verifiedAddress.primary_line,
                    'secondary_line': verifiedAddress.secondary_line,
                    'urbanization':  verifiedAddress.urbanization,
                    'last_line':  verifiedAddress.last_line,
                    'deliverability': verifiedAddress.deliverability,
                    'identifier': row['identifier'],
                    'status': row['2']
                })
            else:
                failure_csv.writerow({
                    'primary_line': row['primary_line'],
                    'secondary_line': row['secondary_line'],
                    'city':  row['city'],
                    'state':  row['state'],
                    'zip_code':  row['zip_code'],
                    'deliverability': verifiedAddress.deliverability,
                    'identifier': row['identifier'],
                    'status': row['2']
                })

            # Print success
            sys.stdout.write('.')
            sys.stdout.flush()

             # New lines for larger csv's
            if idx % 10 is 9:
                sys.stdout.write('\n')
                sys.stdout.flush()

        except lob.error.APIConnectionError:
            print "caught error"

网关错误似乎无法“排除”;有人对解决这个问题有任何想法吗?

我的最终目标是:

  1. 绕过错误。
  2. 记录错误。
  3. 继续 csv 文件的下一行。

谢谢。

【问题讨论】:

  • try 之后不需要except 吗?
  • 例外在代码块的底部
  • 嗯,我的眼睛一定在捉弄我,我可以发誓说finally。无论如何,你在看什么?
  • @ballpointben 我有点不知所措。我不确定如何格式化我的代码,以便当我收到来自 lob 的此响应时,它将继续运行:lob.error.APIConnectionError: { "error": { "message": "GATEWAY_TIMEOUT", "status_code": 504 } }
  • 将该行更改为except Exception:;现在会发生什么?

标签: python python-2.7 exception lob http-status-code-504


【解决方案1】:

如果有帮助,找到一篇文章延长了超时错误前的时间... What can I do to fix a 504 gateway timeout error? 第二个答案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-27
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多