ich habe hier das Problem, dass ich einen Thread starten und nach Ablauf durch einen andere Instanz ersetzen moechte.
Ich bin bei meiner Suche auf die Methode join gestoßen, komme aber so garnicht damit klar.
Hier mal ein bissl Code:
Code: Alles auswählen
class ReqHandler(threading.Thread):
def __init__(self, url, widget, retry=False, newThread=None):
self.url = url
self.widget = widget
self.retry = retry
threading.Thread.__init__(self)
if newThread: self.join(newThread)
def download_file(self, url, webuser=None, webpass=None):
""" Datei aus dem Internet herunterladen """
...
def run(self):
if not self.url.endswith("/"): self.url += "/"
now = time.localtime()
delay = 0 # the age of the news in dates (to do now[2]-delay)
while ((delay <= ((now[2] > 5 and 5) or now[2]-1)) or self.retry):
if self.retry:
url = self.url + "current_news_%02i_%02i_%i.txt" %(now[2], now[1], now[0])
print self.getName()+':', "Trying to renew current news... ",
new_news = self.download_file(url)
if new_news and new_news != newslines:
print "success"
self.widget.SetValue("News actualized at "+str(time.localtime()))
for line in newslines: self.widget.AppendText(line)
else: print "failed"
threading._sleep(10)
else:
url = self.url + "current_news_%02i_%02i_%i.txt" %(now[2]-delay, now[1], now[0])
print "Versuche ("+url+") zu laden...",
newslines = self.download_file(url)
if newslines:
print " done"
self.widget.SetValue(url+"\n\n")
for line in newslines: self.widget.AppendText(line)
break
self.widget.SetValue("There are no news the last %i days.\n" %delay)
print " failed"
delay += 1
self._Thread__stop()
Code: Alles auswählen
url = self.newsurl.GetValue()
self.newsclient = ReqHandler(url, self.newstxt)
self.newsclient.start()
self.newsclient2 = ReqHandler(url, self.newstxt, True, self.newsclient)
self.newsclient2.start()
Ja also der erste Thread wird zwar gestartet, aber scheinbar laeuft er nie aus...