我正在使用geopy来对一些地址进行地理编码,我想捕捉超时错误并将其打印出来,这样我就可以对输入进行一些质量控制。我正在将地理编码请求放在try/catch中,但它不起作用。有什么想法吗?
下面是我的代码:
try:
location = geolocator.geocode(my_address)
except ValueError as error_message:
print("Error: geocode failed on input %s with message %s"%(a, error_message))
我得到了以下异常:
File "/usr/local/lib/python2.7/site-packages/geopy/geocoders/base.py", line 158, in _call_geocoder
raise GeocoderTimedOut('Service timed out')
geopy.exc.GeocoderTimedOut: Service timed out
先谢谢你!
4条答案
按热度按时间kuuvgm7e1#
试试这个:
你也可以考虑增加对地理定位器的地理编码调用的超时时间,在我的例子中,它可能是这样的:
或
kg7wmglp2#
我处理同样的问题这么多天,这是我的代码:
错误服务超时
解决方案:添加一个声明超时的新属性:
u5rb5r593#
您可能遇到此问题,因为您多次尝试请求此地址,但由于usage policy,他们暂时阻止您或减慢您的速度。它规定每秒的请求数不得超过一个,并且您应缓存结果。我遇到了此问题,您有几个解决方案。如果您不“不要想改变你的代码太多,你可以得到一个谷歌API密钥,你可以使用像2500请求/天免费或你可以缓存你的结果。因为我已经在AWS上使用DynamoDB来解决我的问题,所以我继续创建了一个表,并将结果缓存在. Here is the gist of my code.中
kmynzznz4#
添加超时将解决此问题