def start_daemon(pidfile, process, stdout=None, stderr=None, **kwargs): if pidfile: pidfile = PIDLockFile(pidfile) try: pidfile.acquire(timeout=1.0) pidfile.release() except LockFailed: raise else: pidfile = None stdout = stdout or sys.stdout stderr = stderr or sys.stderr with DaemonContext(pidfile=pidfile, stdout=stdout, stderr=stderr, **kwargs): process.start()