ich suche eine Möglichkeit eine urllib Anfragen (openurl) nach X Sekunden abzubrechen, falls die Datei nicht geladen ist!
Etwas exakter:
Ich habe folgendes Problem:
Ich habe ein Programm geschrieben welches einige anfragen per Urllib stellt
(mit Wartezeit dazwischen)!
Leider passiert es ab und zu das das programm einfach hängt (wird an urlopen oder das folgende read() liegen)!
Sieht im Endeffekt so aus (natürlich komplizierter mit wechselnder Adresse) Beispiel:
Code: Alles auswählen
import urllib2
import time
def laden():
for i in range(1000):
#wechselne adresse
adresse = ....
f=open.urlopen(adresse)
quelltext = f.read(adresse)
f.close()
time.sleep(5)
#geladenes speichern
f=open(......
laden()
Ich suche also eine Möglichkeit die Anfrage abzubrechen, wenn nach 1 Minute kein Ergebnis vorliegt!
Ich habe folgendes probiert:
Code: Alles auswählen
import socket
import time
adresse = "....adresse einer 10MB großen Datei"
timeout = 5
socket.setdefaulttimeout(timeout)
import urllib2
zeit = time.time()
req = urllib2.Request(adresse)
f = urllib2.urlopen(req)
qt = f.read()
f.close()
print time.time() - zeit
Hab als Beispiel mal eine große Dtaei geladen (dauert 23 Sekunden) und es wird nicht abgebrochen!
Auch mit Multithreading sehe ich kein Erfolg (Thread können ja nicht gekillt werden,oder?)
Hat wer ne idee???
gruß und schöne Weihnachten