I tend to think this is the wrong way to go about daemonizing a process; it does the relatively easy but fiddly stuff for you, leaving you still to manage process monitoring.<p>Better to have the process neither know not care about its daemonized status, which is not really core program logic, and have the process monitor manage daemonization, à la <a href="http://cr.yp.to/daemontools.html" rel="nofollow">http://cr.yp.to/daemontools.html</a>
Twisted Python comes with its own "twistd" script to daemonize a Twisted application. Sure, not every Python daemon is written in Twisted, but most daemons talk to a TCP, UDP, or Unix socket for something, which means Twisted is a tool you're likely to be evaluating anyway.
I haven't tried this, but it sure looks handy. Writing a daemon is a common task, but not so often (for me, anyway) that it feels like copy-and-pasting the same boilerplate every time. So, I ignore the old rule that says "if you're going to do it more than once, write a program to do it for you". I always end up writing a one-off prototype for my own personal use, and then upgrading it to be a daemon, and I make the same Google searches every time. I'll have to try this next time.
This one is the one I use for several applications <a href="http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/" rel="nofollow">http://www.jejik.com/articles/2007/02/a_simple_unix_linux_da...</a>