Okay I have looked at python-daemon, and also at various other daemon related code recipes. Are there any 'hello world' tutorials out there that can help me get started using a python based daemonized process?
2 Answers
The PEP 3143 contains several examples, the simplest one of which is:
import daemon
from spam import do_main_program
with daemon.DaemonContext():
do_main_program()
This seems as straightforward as it gets. If there's something that's unclear, please pose specific questions.
1 Comment
Andres Charles
after doing just that do you just simple run it as a simple python script? python2.6 foo.py?
Using subprocess.Popen, you can launch another process that will survive your current process...
In a python console run :
import subprocess
subprocess.Popen(["/bin/sh", "-c", "sleep 500"])
Kill your console, look at existing processes, sleep is alive...
4 Comments
Andres Charles
I have never seen this approach before I will look into it thanks.
jdi
This will not work. It only seems to work with sleep because the sleep itself is holding the process open. Try it with calling an actually application. Once you close the terminal the process will die.
jdi
If you really want to accomplish this by calling out to the shell you can do:
subprocess.Popen(["nohup", "<program here>"]) which will launch the command freely and it wont die if the terminal is closed.Drahkar
This is not actually daemonizing anything. Only apps that will stay open with a subprocess call are apps that are already a daemon. This is merely a call to open another program, not a method to daemonize a Python application.
daemontools,launchd, orupstart. They even handle important things like logging for you, and make sure your process stays running.