Python 无法重新启动buildbot主机

Python 无法重新启动buildbot主机,python,twisted,buildbot,Python,Twisted,Buildbot,我正在Windows7上运行Buildbot版本0.8.8 我有一个配置文件(master.cfg),它使用一个小技巧创建所有的构建器。我从subversion读取了一个XML文件,其中列出了构建器的所有步骤。比如: <Builder name="BuilderA" description="Builds the A project"> <Command name="Clean">-v -t realclean -p my\\projA</Command&g

我正在Windows7上运行Buildbot版本0.8.8

我有一个配置文件(
master.cfg
),它使用一个小技巧创建所有的构建器。我从subversion读取了一个XML文件,其中列出了构建器的所有步骤。比如:

<Builder name="BuilderA" description="Builds the A project">
    <Command name="Clean">-v -t realclean -p my\\projA</Command>
    <Command name="Release">-v -t release -p my\\projA</Command>
</Builder>

<Builder name="BuilderB" description="Builds the B project">
    <Command name="Clean">-v -t realclean -p my\\projB</Command>
    <Command name="Release">-v -t release -p my\\projB</Command>
</Builder>

我不知道这是什么
twisted.pid
文件,也不知道buildbot为什么要找这个?任何帮助或想法都将不胜感激。谢谢。

到目前为止,您提供的信息还不能说明这一点 事实上,一切都错了

twistd.pid
是buildmaster的进程id文件。它的存在 指示buildmaster正在运行。它的缺失表明 buildmaster没有运行

重新启动buildmaster意味着先停止它,然后再启动它。停止 它使buildbot检查buildmaster的pid文件。如果没有pid 文件,然后它会通知您buildmaster未运行,并且 继续启动它

因此:

  • 除非您知道buildmaster是 重新启动时正在运行,并观察此消息。你知道吗

  • 该消息是无害的信息,除非buildmaster也无法启动。 你知道它不能启动吗

如果你知道buildbot说buildbot没有运行时Buildbaster正在运行, 当您试图重新启动它时,它无法启动,然后 有人想知道的是:您到底运行了什么命令来重新启动
buildmaster以及您在哪个目录下运行它?

我遇到了相同的问题。在windows上,似乎没有创建文件
twistd.pid
。我不确定该漏洞来自何处,但我向buildbot团队报告了该漏洞:

作为解决方法,我现在在my master.cfg中添加了:

import os
if not os.path.exists("twistd.pid"):
    with open("twistd.pid", "w") as pidfile:
        pidfile.write("{}".format(os.getpid()))
编辑:实际上,停止后PID文件似乎没有被删除。。。所以我尝试了更多:

else:
    realpid = os.getpid()
    filepid = 0
    with open("twistd.pid", "r") as pidfile:
        filepid = int(pidfile.read())
    if filepid == 0 or filepid != realpid:
        with open("twistd.pid", "w") as pidfile:
            pidfile.write("{}".format(realpid))

它似乎可以工作,但如果在buildbot实际不运行时尝试停止它,则会出现错误,因为PID文件会生成错误的PID,它会试图终止它。

嗨,Mike,谢谢您的输入。是,在我发出
start
命令后,buildmaster正在运行。我可以在html状态瀑布网页上验证它。所以buildmaster肯定在运行。其次,我在buildmaster应该运行的同一目录下运行了
buildbot restart C:\master\u dir
。我检查了目录,但没有找到任何twisted.pid文件。除了之外的裸露
是一种糟糕的风格,可能会掩盖其他一些错误情况。尝试更改代码以报告正在发生的实际错误,并向上游报告此错误处理代码,以便正确修复。@Jean-PaulCalderone我引用的代码是buildbot的包代码。这不是我写的东西。我引用它是为了让问题更清楚,并说明实际错误发生的地方。的确如此——但它仍然是应该修复的错误代码。:)在修复过程中,您可能会发现此故障的根本原因。
else:
    realpid = os.getpid()
    filepid = 0
    with open("twistd.pid", "r") as pidfile:
        filepid = int(pidfile.read())
    if filepid == 0 or filepid != realpid:
        with open("twistd.pid", "w") as pidfile:
            pidfile.write("{}".format(realpid))