与 HTTPSConnectionPool 的连接因 ReadTimeoutError 中断(正在重试)

问题描述 投票:0回答:1

下面的代码执行时耗时较长。

for index,row in d_airbnb.iterrows(): #Loop for para varrer cada linha.
    latitude = row['latitude']
    longitude = row['longitude']
    location = geo_locator.reverse((latitude, longitude),language='en', exactly_one=True,timeout=5) #Usamos o metodo geolocator.reverse() para descobrir se cada zipcode é válido.
    address = location.address
    if row['neighbourhood'] not in address:
        d_airbnb.at[index, 'zipcode'] = '00000' #Caso o zipcode não corresponder ao bairro que o locator.reverse me forneceu pela API, então o zipcode é invalido e inconsistente. Por isso trocamos por "00000".

我尝试将超时增加到 2 秒,但仍然需要很长时间并产生一些超时错误:

WARNING:urllib3.connectionpool:Retrying 
(Retry(total=1, connect=None, read=None, redirect=None, status=None)) 
after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='nominatim.openstreetmap.org', port=443): 
Read timed out. (read timeout=1)")'

这是什么原因造成的,如何治疗?
还有其他方法可以更快地检查这些邮政编码吗?我的数据集中有 70'000 行和 29 列。

pandas urllib3 nominatim connection-pool
1个回答
1
投票

指定不允许密集使用的要求:每秒最多 1 个请求单击)。因此,您可以将睡眠设置为

1 second
并存储数据,以防止重新下载已获取的数据。

还有两个选项(单击)。

  1. 使用其他可用的商业第三方提供商
  2. 安装您的 Nominatim 实例(我认为不推荐用于您的情况)
© www.soinside.com 2019 - 2024. All rights reserved.