【问题标题】:413 'Request Entity Too Large' using Python and postcodes.io API413“请求实体太大”使用 Python 和 postcodes.io API
【发布时间】:2019-11-12 16:52:58
【问题描述】:

我有大量的邮政编码,我想使用“postCodes.io”API,它在 python 中为给定的邮政编码提供经度和高度数据。

当我只请求 3-4 个邮政编码时,它不会给出错误,但是当我想要大量数据时,它会给出“413 错误”。我应该如何使用 python 等待所需的时间并再次尝试使用 API?

如果我在本地机器上下载 API 并使用 docker 运行,是否可以更改此请求限制? https://postcodes.io/docs#Install-notes

这是我的代码:

import requests
import json
import pandas as pd

file = 'DataSets/deneme.csv'
df = pd.read_csv(file)

postCodeArray = []

for postCode in df['PostCode']:
    postCodeArray.append(postCode)

parameters = {
    "postcodes": json.dumps(postCodeArray)   #should be used.["OX49 5NU", "M32 0JG", "NE30 1DP"]
}

response = requests.post("https://api.postcodes.io/postcodes", data=parameters)
data = response.json()

file = deneme.csv 看起来像这样:

Transaction Unique Identifier,PostCode,Town/City
{8A78B2B0-5D07-5CB0-E053-6B04A8C0F504},SG5 1RT,HITCHIN
{8A78B2B0-5D09-5CB0-E053-6B04A8C0F504},AL3 4GD,ST ALBANS
{8A78B2B0-5D0A-5CB0-E053-6B04A8C0F504},WD25 0NF,WATFORD
{8A78B2B0-5D0C-5CB0-E053-6B04A8C0F504},WD7 7NN,RADLETT
{8A78B2B0-5D0D-5CB0-E053-6B04A8C0F504},SG6 4LU,LETCHWORTH GARDEN CITY
{8A78B2B0-5D0E-5CB0-E053-6B04A8C0F504},SG9 9JH,BUNTINGFORD
{8A78B2B0-5D11-5CB0-E053-6B04A8C0F504},WD7 7JA,RADLETT
{8A78B2B0-5D12-5CB0-E053-6B04A8C0F504},SG12 9DZ,WARE
{8A78B2B0-5D17-5CB0-E053-6B04A8C0F504},SG6 3BA,LETCHWORTH GARDEN CITY
{8A78B2B0-5D18-5CB0-E053-6B04A8C0F504},SG6 3BA,LETCHWORTH GARDEN CITY
{8A78B2B0-5D1B-5CB0-E053-6B04A8C0F504},WD17 4UH,WATFORD
{8A78B2B0-5D1C-5CB0-E053-6B04A8C0F504},HP2 7QF,HEMEL HEMPSTEAD
{8A78B2B0-5D2E-5CB0-E053-6B04A8C0F504},HP2 4BA,HEMEL HEMPSTEAD

【问题讨论】:

    标签: python api docker http-post http-status-code-413


    【解决方案1】:

    这是因为您从整个列表中发送了一个庞大的请求。相反,您可以发送多个较小的请求,每个请求带有几个邮政编码,并将每个请求的输出附加到一个列表中。

    HTTP 错误 413“请求实体太大”不是由速率限制引起的,而是由单个请求的大小引起的。您可以尝试向多台服务器发送大量 GET 或 POST 请求并得到相同的错误消息。

    尝试一次只查询 3-4 个邮政编码(或者找到最大限制并每次都请求该数字)。

    【讨论】:

    • 是否有任何可能的自动化查询少量邮政编码和请求这样的帖子?
    【解决方案2】:

    嘿,每个使用 API 的人都给了我结果。正如@john doe 所说,我试图找到我一次可以请求的最大数量的邮政编码。 每个请求 100 个。然而,拥有 4 GB 的数据并不能轻松计算所有这些数据。所以我找到了英国的 PostCode Zip 文件,问题就解决了。

    我还发现了如何限制您的请求:通过使用另一个名为ratelimit的api

    【讨论】:

      猜你喜欢
      • 2020-05-04
      • 2014-12-30
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 2015-10-04
      相关资源
      最近更新 更多