2016-07-23 25 views
0

Ich versuche, den folgenden Code auszuführen,Python urlopen Fehler [Errno 10060]

for parname in parss: 
    data = {'action': 'listp', 'parish': parname} 
    data = urllib.urlencode(data) 
    req = urllib2.Request('http://www.irishancestors.ie/search/townlands/ded_index.php', data) 
    response = urllib2.urlopen(req) 

aber ich habe den Fehler unten wenige Minuten, nachdem der Code

ausgeführt wird
urllib2.URLError: <urlopen error [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond> 

Das ist mein Proxy die Einstellungen.

enter image description here

Jede Hilfe ist sehr

+0

Für mich funktioniert die Verbindung. Firewall, Anti-Virus oder etwas, das blockieren könnte? – mhoff

+0

Michael, der Code läuft einige Schleifen vor dem Geben des Fehlers. Ich bekomme den Fehler auch bei abgeschalteter Firewall, kein Antivirus :( – SaikiHanee

+0

Wie viele Iterationen? Ich könnte 100 problemlos ausführen. Was machst du mit den Antwortobjekten? Hast du andere Verbindungen? Sie könnten deine IP wegen blockieren viele Zugriffe in sehr kurzer Zeit. – mhoff

Antwort

1

geschätzt Wie in den Kommentaren diskutiert, eine große Anzahl von Anfragen in kürzester Zeit die Ausführung zu dem Server führen kann, vor allem Web-Server, Ihre Verbindungsversuche zu blockieren.

Dies ist eine gängige Gegenmaßnahme zu automatisierten Angriffen auf das Internet. Abhängig vom Server sollte das Warten auf sehr kurze Zeit zwischen den Anfragen Ihr Problem lösen.

Sie könnten auch einen dynamischeren Ansatz verwenden. Führen Sie zuerst so viele Anfragen wie möglich aus, ohne dazwischen zu warten. Wenn eine Anfrage länger dauert als üblich, ist es höchstwahrscheinlich eine Zeitüberschreitung und Sie müssen warten. An dieser Stelle stornieren Sie Ihre Anfrage, warten Sie und versuchen Sie es erneut. Wenn der anschließende Versuch ebenfalls zu einem Timeout führt, verdoppeln Sie die Wartezeit. Mit dieser Prozedur, genannt Adaptive Backoff, sollten Sie (hoffentlich) in der Lage sein, mit minimalem Overhead auf die gewünschten Daten zuzugreifen.