我正在使用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提前谢谢你!
发布于 2015-01-13 12:22:54
试试这个:
from geopy.geocoders import Nominatim
from geopy.exc import GeocoderTimedOut
my_address = '1600 Pennsylvania Avenue NW Washington, DC 20500'
geolocator = Nominatim()
try:
location = geolocator.geocode(my_address)
print(location.latitude, location.longitude)
except GeocoderTimedOut as e:
print("Error: geocode failed on input %s with message %s"%(my_address, e.message))您还可以考虑增加对地理定位器进行的地理编码调用的超时。在我的示例中,它类似于:
location = geolocator.geocode(my_address, timeout=10)或
location = geolocator.geocode(my_address, timeout=None)发布于 2020-01-26 14:17:16
我花了很多天来处理同样的问题,这是我的代码:
geolocator = Nominatim(user_agent="ny_explorer")
location = geolocator.geocode(address_venue)错误服务超时
解决方案:添加一个声明超时的新属性:
location = geolocator.geocode(address_venue,timeout=10000)发布于 2017-05-23 13:35:34
您可能会遇到此问题,因为您多次尝试请求此地址,但由于他们的usage policy,他们暂时阻止了您或降低了您的速度。它声明每秒不超过一个请求,并且您应该缓存结果。我遇到了这个问题,你有几个解决方案。如果你不想更改太多代码,你可以获得一个Google API密钥,你可以免费使用它,比如每天2500个请求,或者你可以缓存你的结果。因为我已经在亚马逊网络服务上使用了DynamoDB来解决我的问题,所以我继续创建了一个表,并在其中缓存了我的结果。Here is the gist of my code.
https://stackoverflow.com/questions/27914648
复制相似问题