嘿所有我正在编写一个与jenkins一起工作的界面来触发构建作业和部署。我一直坚持的一个功能就是能够在构建完成后获得构建的状态。
截至目前,我已经使用Tkinter实现了一个GUI,除了最终构建状态的缺失信息之外,应用程序完全正常运行。
我试图用jenkins来查询信息,但我需要花时间在轮询之前完成构建。我想我可以通过一个简单的线程实现这一点,并让它在后台运行,但是,当线程运行并且它命中time.sleep()函数时,它也会暂停程序的其余部分。
这是否可以在不停止程序的其余部分(即GUI)的情况下执行,如果是,我哪里出错?
这是问题领域的一个问题:
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']
答案 0 :(得分:3)
创建线程时,需要传递函数本身。确保不要调用该函数。
monitor_thread = threading.Thread(target=self._pollBuild())
# ^^
应该是:
monitor_thread = threading.Thread(target=self._pollBuild)