Vairāk

Izvairieties no taimauta kļūdas Nominatim Geopy OpenStreetMap

Izvairieties no taimauta kļūdas Nominatim Geopy OpenStreetMap


Kā izvairīties noGeocoderTimedOut ('Pakalpojuma noildze')kļūda GeoPy, izmantojot OSM Nominatim ģeokoderu? Mani neinteresē izmantot izņēmumu un izlaist dažus ierakstus. Es jau izmantoju 1,1 sekundes laika aizkavi savā skriptā, izmantojotlaiks. gulēt (1.1). Kopējā datu bāze ir 10 000 ierakstu.

Nominatim lietojuma politika


Jūs varētu veikt rekursīvu funkciju. Vienkārši ierakstiet Python-esque pseidokodu:

no geopy.exc importa GeocoderTimedOut def do_geocode (adrese, mēģinājums = 1, maks. mēģinājumi = 5): mēģiniet atgriezt geopy.geocode (adrese), izņemot GeocoderTimedOut: ja mēģinājums <= max_att mēģinājumi: atgrieziet do_geocode (adrese, mēģinājums = mēģinājums + 1) paaugstināt

Dokumentācija geopy.exc.GeocoderTimedOut.

Tas turpinās atkārtotdo_geocodelīdz brīdim, kad izdosies atgriezties, neizvirzot noildzes izņēmumu. Iespējams, vēlēsities ierobežot mēģinājumu skaitu vai arī iestatīt gaidīšanas periodu pēc neveiksmīga mēģinājuma. Varat arī padomāt par to, kāpēc notiek noildze. Izmantojot ģeogrāfiju, varat iestatīt laika periodu, kas jāgaida, pirms tiek parādīta taimauta kļūda jebkurai no ģeokodēšanas metodēm,pārtraukumsatslēgvārda arguments. Dokumentācijā teikts, ka "daži pakalpojumi vienmēr ir lēni", un tiek ieteikts to palielināt.


PassNavlai atspējotu taimautu.

location = geolocator.geocode (apgabals, taimauts = nav)

Skatīties video: Nominatim OpenStreetMap GEOCODING. STREET ADDRESS to LATITUDE u0026 LONGITUDE coordinates