2012-01-28 30 views
7

我最近從我的應用程序創建了一個版本控制頁面來管理部署過程。Gunicorn ::從應用程序本身重新加載

(是的,我知道,GitHub的+掛鉤是不是從零改寫更好,但我們是在伊朗和我們敬愛的政府已經封鎖了所有的SSH連接到該國以外:(()

有在頁面中是一個merge + reload操作,merge與其他部分一樣工作,但是reload部分在沒有任何消息的情況下失敗,我爲kill命令添加了sudo行,並且worker進程的用戶擁有足夠的權限,我甚至執行了代碼形式爲django shell,並重新載入進程。

接收信號是否有任何限制,比如工人無法重新加載主機?

下面是相關代碼:

def command(x): 
    return str(Popen(x.split(' '), stdout=PIPE).communicate()[0]) 

pid = open(PATH + "/logs/gunicorn.pid").readline().strip() 
cmd = "sudo kill -HUP %s" % pid 
content += command(cmd) 

回答

1

猜猜我的頭的頂部是重啓不工作,因爲進程調用的重載被殺害。也許嘗試守護一個在調用reload之後退出的子進程?看看這篇文章:

spawning process from python

相關問題