2011-10-06 251 views
3

好的,我已經看過python守護進程,還有其他各種守護進程相關的代碼配方。是否有任何'hello world'教程可以幫助我開始使用基於python的守護進程?使用python,守護進程

+0

python-daemon的頁面上的例子(http://pypi.python.org/pypi/python-daemon/)不適合你? – madjar

+2

請強烈考慮不要守護自己。在後臺運行進程有很多更好的方法,比如djb的'daemontools','launchd'或'upstart'。他們甚至可以處理重要的事情,例如爲您登錄,並確保您的流程*保持運行。 – habnabit

+0

@AaronGallagher爲什麼我應該避免自己創建一個守護進程我之前已經多次聽說過這個守護進程? –

回答

5

PEP 3143包含幾個examples,其中最簡單的一種是:

import daemon 

from spam import do_main_program 

with daemon.DaemonContext(): 
    do_main_program() 

這似乎是直接了當。如果有什麼不清楚的地方,請提出具體問題。

+1

做完這些之後,你只需簡單地將它作爲一個簡單的Python腳本來運行? python2.6 foo.py? –

-3

使用subprocess.Popen,你可以啓動另一個進程,這將拯救你當前進程...

在Python控制檯運行:

import subprocess 
subprocess.Popen(["/bin/sh", "-c", "sleep 500"]) 

殺死你的控制檯,看看現有的流程,睡眠是活着的...

+0

我從來沒有見過這種方法,我會看看它的感謝。 –

+0

這不起作用。它似乎只適用於睡眠,因爲睡眠本身使過程保持開放。嘗試調用實際的應用程序。一旦你關閉了終端,這個過程就會消失。 – jdi

+0

如果你真的想通過調用shell來完成這個任務:'subprocess.Popen([「nohup」,「」])''將自由地啓動命令,並且如果終端關閉了。 – jdi