python ubuntu upstart job需要重启自己

时间:2014-09-06 18:19:16

标签: python ubuntu upstart

我有一个Python脚本,我作为ubuntu upstart工作运行。我从shell开始:

sudo service my-service-name start

在服务本身的Python代码中,我需要在某些情况下重启服务。以下是我的表现:

import subprocess
import shlex
cmd = 'sudo service my-service-name restart'
subprocess.check_output(shlex.split(cmd), stderr=subprocess.STDOUT)

如果我从shell运行cmd,我可以成功重启我的upstart作业。如果我从作业本身运行它,作业就会停止,但永远不会重新开始。

新手工作以这种方式开始出现问题吗?如果是这样,还有另一种方法可以让新手工作重新启动吗?

我重新开始工作的原因是我已经更新了磁盘上的底层Python代码,并且我希望重新启动作业以便它能够运行新的代码。

1 个答案:

答案 0 :(得分:0)

您正在从 Python应用程序更新Python应用程序代码?这不是一个好主意......

无论如何,也许通过在Upstart作业中使用respawn节,将USR1的信号处理程序设置为TERM的处理程序,然后向自己发送USR1信号(或者只是向自己发送TERM信号,但是你不知道什么时候自动重生是为了你的特殊目的而不是。)