ich habe eine globale Funktion, die (von mehreren Klassen aus aufgerufen wird und) mit urllib eine etwas länger dauernde HTTP-Anfrage durchführt. Nun steht das Programm während dieser Zeit still und ich habe mich gefragt, ob man diese Anfrage irgendwie im Hintergrund ausführen kann und nach erfolgreicher Abarbeitung mitbekommen kann, dass die Anfrage nun durchgeführt wurde.
Habt ihr ne Idee?
So sieht diese Anfrage aus (Rückwärtssuche auf 11880.com):
Code: Alles auswählen
def lookup_11880_(phone_number):
"""
This function searches for an alias name of a number on www.11880.com
"""
# connect to www.11880.com
try:
parameter = urllib.urlencode ({
"fuseaction" : "Suche.rueckwaertssucheresult",
"init" : "true",
"change" : "false",
"searchform" : "Rueckwaerts",
"tel" : phone_number
})
httprequest = urllib.urlopen("http://www.11880.com/Suche/index.cfm", parameter)
htmllist = httprequest.read()
pattern = re.compile(".*nam_header[^>]*>[^>]*>([^<]*).*")
namelist = pattern.findall(htmllist)
ergname = namelist[0]
# format the result in utf-8
ergname = ergname.replace("\r","")
ergname = ergname.replace("\n","")
ergname = ergname.replace("\t","")
ergname = ergname.decode("iso-8859-1")
ergname = ergname.encode("utf-8")
except:
print _('INFO: inverse lookup unsuccessfull')
return phone_number
print _('INFO: reverse lookup found the followin alias: %s') % (ergname)
return ergname