Geopy: error de tiempo de espera de captura

Estoy utilizando Geopy para geocodificar algunas direcciones y quiero detectar los errores de tiempo de espera e imprimirlos para poder hacer un control de calidad en la entrada. Estoy poniendo la solicitud de geoencoding en un try / catch pero no está funcionando. ¿Alguna idea sobre lo que necesito hacer?

Aquí está mi código:

try: location = geolocator.geocode(my_address) except ValueError as error_message: print("Error: geocode failed on input %s with message %s"%(a, error_message)) 

Me sale la siguiente excepción:

 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 

¡Gracias de antemano!

Prueba esto:

 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)) 

También puede considerar boost el tiempo de espera en la llamada de geoencoding que está realizando a su geolocalizador. En mi ejemplo sería algo como:

 location = geolocator.geocode(my_address, timeout=10) 

o

 location = geolocator.geocode(my_address, timeout=None) 

Puede estar experimentando este problema porque intentó solicitar esta dirección varias veces y lo bloquearon temporalmente o lo retrasaron debido a su política de uso . Indica que no hay más solicitudes de una por segundo y que debe almacenar en caché los resultados. Me encontré con este problema y tienes un par de soluciones. Si no desea cambiar mucho su código, puede obtener una clave de API de Google que puede usar para aproximadamente 2500 solicitudes por día de forma gratuita o puede almacenar en caché los resultados. Debido a que ya estaba usando DynamoDB en AWS para mi problema, seguí adelante y acabo de crear una tabla en la que guardo mis resultados. Aquí está la esencia de mi código.