2016-06-25 18 views
1

解決方法がわかりません。私は座標をジオロケーションアドレスに変換したいファイルを反復したいと思います。コードは正常に動作しますが、ファイル内の特定の行数だけiteretesした後に問題が発生します。HTTPエラー429:python geopyによるリクエストが多すぎます

from __future__ import print_function 
from geopy.geocoders import Nominatim 
from shapely.wkt import loads as load_wkt 
from shapely.geometry import Point, Polygon 
import io 
import re 
import ast 
import time 

geolocator = Nominatim() 

with io.open('sample_test2.txt', encoding="utf-8") as f, io.open('sample_test3.txt', 'w',encoding="utf-8") as g: 
     for line in f: 
       m = re.sub(r'(70[0-9]+,).*', r'\1', line.rstrip()) 
       z = re.sub(r'.*POINT \([0-9]+.[0-9]+ -[0-9]+.[0-9]+\)(.*)', r'\1', line.rstrip()) 
       c = re.sub(r'.*POINT \(([0-9]+.[0-9]+) (-[0-9]+.[0-9]+)\).*', r'"\1, \2"', line.rstrip()) 
       k = ast.literal_eval(c) 
       location = geolocator.reverse(k, timeout=60) 
       h = location.address 
       j = re.sub(r'.*, ([^,]+, [^,]+), [0-9]+, United.*', r'\1', h.rstrip()) 
       print (m, j, z, file = g) 
f.close() 
g.close() 

ここで、私はtime.sleep()を使用する必要があります他の質問からお読みください。今私はprintの前に入れたいと思っていました。私は(time.sleep()なし)私のコードを実行する最初の時間は、それは彼がこのエラーを取得する前に変換周りの1800行に来た:

raise GeocoderServiceError(message) 
geopy.exc.GeocoderServiceError: HTTP Error 429: Too Many Requests 

しかし、今でまたはtime.sleep()せずに、それは、ただでさえ、最初の行にそれをしませんエラーから始めて壊れます。どのようなアイデアをするか?

+0

http://www.jackmaney.com/2015/01/09/geocoding-rate-limited-queue/ –

+0

このコードと私がtime.sleep(0.1)を入れたのはどう違いますか?それは1秒あたり10で制限されています.close(0.1)と同じですか? – Vedad

答えて

0

あなたが使用しているWebサービスが、あなたのIPアドレス経由でブロックされているようです。しばらく待ってから、サービスに「フレンドリー」になっていることを確認します(たとえば、スリープを挿入するなど)。

+0

私はsecund、分、時間、日あたりに変換することができます最大何がどのようにチェックする方法はありますか???? – Vedad

+0

彼らはおそらくどこかのドキュメントでそれを持っています。 – mrks

関連する問題