Note the python-daemon package which solves a lot of problems behind daemons out of the box.
Among other features it enables to (from Debian package description):
- Detach the process into its own process group.
- Set process environment appropriate for running inside a chroot.
- Renounce suid and sgid privileges.
- Close all open file descriptors.
- Change the working directory, uid, gid, and umask.
- Set appropriate signal handlers.
- Open new file descriptors for stdin, stdout, and stderr.
- Manage a specified PID lock file.
- Register cleanup functions for at-exit processing.