2014-09-06 22 views
0

我有一個Python腳本,我作爲Ubuntu的新貴工作運行。我從外殼啓動它:python ubuntu新貴作業需要重啓自己

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。如果我從作業本身運行它,那麼作業會停止,但不會再次開始。

以這種方式開始自己的暴發性就業機會有問題嗎?如果有的話,還有另一種方式可以讓自己的新生重新開始工作?

我重新啓動工作的原因是我更新了磁盤上的底層Python代碼,並且希望重新啓動作業以便它運行新代碼。

回答

0

您正在從Python應用更新Python應用代碼,從?這不是一個好主意......

無論如何,也許通過使用Upstart作業中的respawn節,將USR1的信號處理程序設置爲TERM的處理程序,然後發送自己的USR1信號(或者只發送自己TERM信號,但你不知道什麼時候自動重生是爲了你的特殊目的)。