413 'Request Entity Too Large' 使用 Python 和 postcodes.io API

413 'Request Entity Too Large' using Python and postcodes.io API

我有大量的邮政编码,我想使用 "postCodes.io" API,它给出 python.

中给定邮政编码的经度和高度数据

当我只请求 3-4 个 postCodes 时,它不会给出错误,但是当我需要大量数据时,它会给出“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()

文件 = 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

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

HTTP 错误 413 "Request Entity Too Large" 不是由速率限制引起的,而是由单个请求的大小引起的。您可以尝试向许多服务器发送大量 GET 或 POST 请求并收到相同的错误消息。

尝试一次只查询 3-4 个 post 代码(或找到最大限制并每次请求该数量)。

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

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

的 api