关于服务器监听的Python问题

2024-06-10 20:26:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我为jetbrains工具teamcity编写了一个插件。它几乎只是一个服务器侦听器,它监听一个正在被触发的构建,并输出一些文本文件,其中包含关于不同构建的信息,比如触发它的原因、那里有多少更改等等。在我完成后,我编写了一个python脚本,可以在服务器运行和启动构建时将信息输入teamcity。我希望能够在构建运行后获得该构建的构件,但问题是我不知道每个构建运行需要多长时间。有时是30秒,有时是30分钟。在

所以我用python中的这一行开始构建。在

    urllib.urlopen('http://'+username+':'+password+'@localhost/httpAuth/action.html?add2Queue='+btid+'&system.name=<btid>&system.value=<'+btid+'>&system.name=<buildNumber>&system.value=<'+buildNumber+'>')

在构建运行后(一些不确定的时间量),我想使用这行来获取我的文本文件。在

^{pr2}$

问题是我不知道要等多久才能执行第二行。通常在Java中,我会做第二个线程,它会休眠一段时间,然后等待构建完成。我不知道如何在python中实现这一点。因此,如果有人知道如何用python实现这一点,或者有更好的方法来实现这一点,我将不胜感激。如果我需要更好的解释请告诉我。在

授予-


Tags: 工具name服务器脚本插件信息value原因
2条回答

Python实际上有一个与Java非常相似的threading system,因此您应该能够毫不费力地使用它。在

但是如果你只需要等待一段预定的时间,那么就使用

import time
time.sleep(300) # sleep for 300 seconds

除非您通过让构建服务器联系您而得到通知,否则唯一的方法就是轮询。你可以在一个主线程中生成你的评论。在

比如:

wait=True
while wait:
   url=urllib.urlopen('http://'+username+':'+password+'@localhost/httpAuth/action.html?add2Queue='+btid+'&system.name=<btid>&system.value=<'+btid+'>&system.name=<buildNumber>&system.value=<'+buildNumber+'>')
   if url.getcode()!=404:
     wait=False
   else:
     time.sleep(60)

作为替代,您可以使用CherryPy。然后,当构建完成后,可以让curl或wget连接到侦听CherryPy服务器并触发应用程序下载url。在

也可以使用xmlrpclib执行类似的操作。在

相关问题 更多 >