Freitag, 21. Dezember 2007

Google Geocoding: Fehler 620

Die letzten Tage habe ich mich für meinen Arbeitgeber etwas intensiver mit Google Maps inklusive Geocoding beschäftigt. Dabei ging (eigentlich "geht" ... weil noch nicht fertig) es um die Anzeige von einigen hundert Adressen auf einer Karte. Dabei müssen erst alle Adressen geocodiert werden - also Längen- und Breitengrad ermittelt werden. Die Codierung habe ich in einer Art Batch-Verarbeitung über eine Google Geocoding API durchgeführt. Bei etwa 80% der Adressen war das kein Problem.

Für die restlichen 20% konnte keine Geocodierung durchgeführt werden. Okay - es waren auch viele Adressen dabei, die einfach falsch waren. Straßennamen und Städtenamen sollten halt schon richtig geschrieben sein. Was aber verwunderlich war, dass einige Adressen, die definitiv richtig waren, nicht geocodiert werden konnten. Sehr komisch.

Ich habe mir dann mal für die entsprechenden Adressen den Statuscode der Google API ausgeben lassen. Und hier staunte ich nicht schlecht: 620. Dieser Fehlercode besagt, dass innerhalb von 24 Stunden zu viele Anfragen gestellt wurden. Aber dies konnte einfach nicht sein. Innerhalb dieses Zeitraums darf man 50.000 Anfragen an die API schicken (hier nachzulesen).

1.6 Geocode Requests. There is a limit of 50,000 geocode requests per day per Maps API key. This translates to roughly one geocode request every 1.73 seconds. If you exceed this 24-hour limit, the Maps API geocoder may stop working for you temporarily. If you continue to abuse this limit, your access to the Maps API geocoder may be blocked permanently.

Und da war ich mit Sicherheit nicht drüber. Vor allem da dieser Fehlercode ganz wahllos bei einigen Adressen aufgetreten ist und danach wieder andere Adressen richtig geocodiert wurden.

So komisch das Verhalten der Google API in diesem Fall war - genauso einfach war auch die Lösung. Wenn man die Erklärung zum Fehlercode 620 nicht ganz so genau nimmt, dann kommt man drauf:

"The given key has gone over the requests limit in the 24 hour period."

Nun beachten wir nur mal den ersten Teil und lassen das "in the 24 hour period" einfach weg. Da haben wir die Lösung.

Ich habe dann beim Durchlaufen der Adressliste nach jedem fünften Eintrag eine Pause von einer Sekunde eingebaut und siehe da - Fehler 620 ist Geschichte. Es hat also daran gelegen, dass einfach zu viele Anfragen in einem kurzen Zeitraum hintereinander gestellt wurden.

Problem erkannt! Gefahr gebannt!

Keine Kommentare:

Kommentar veröffentlichen