Hey, ich schreibe eine Schnittstelle, die mit jenkins funktioniert, um Build-Jobs und Deployments auszulösen. Ein Feature, an dem ich festhalte, ist es, den Status eines Builds zu erhalten, sobald er fertig ist.Threading stoppt die Ausführung des Tkinter-Programms
Ab sofort habe ich eine GUI mit Tkinter implementiert und die App ist voll funktionsfähig mit Ausnahme der fehlenden Informationen über den endgültigen Build-Status.
Ich habe versucht, Jenkins für die Informationen abzufragen, aber ich muss es Zeit geben, den Build vor dem Polling zu beenden. Ich dachte, ich könnte dies durch einen einfachen Thread erreichen und es einfach im Hintergrund laufen lassen, aber wenn der Thread ausgeführt wird und die time.sleep() -Funktion erreicht, hält es auch den Rest des Programms an.
Ist dies möglich, ohne den Rest des Programms, d. H. Die GUI, zu stoppen, und wenn ja, wo gehe ich falsch?
Hier ist ein snippit des Problembereiches:
def checkBuildStatus(self):
monitor_thread = threading.Thread(target=self._pollBuild())
monitor_thread.daemon = True
monitor_thread.start()
def _pollBuild(self):
# now sleep until the build is done
time.sleep(15)
# get the build info for the last job
build_info = self.server.get_build_info(self.current_job, self.next_build_number)
result = build_info['result']
Arbeitete wie ein Charme, macht Sinn ich es auf dem Hauptthread rief, ohne es zu merken. Vielen Dank! –