diff options
author | Krzysztof A. Adamski <krzysztofa@gmail.com> | 2008-06-07 15:04:09 -0400 |
---|---|---|
committer | Krzysztof A. Adamski <krzysztofa@gmail.com> | 2008-06-07 15:04:09 -0400 |
commit | dee316020aaf6e70c909ea177adf2742a33e2b7b (patch) | |
tree | b75b93cf38473d3120103814fecf385e0796358d /func/jobthing.py | |
parent | bb80b6e6f10bd97b2926f447e913d8249592c32d (diff) | |
download | func-dee316020aaf6e70c909ea177adf2742a33e2b7b.tar.gz func-dee316020aaf6e70c909ea177adf2742a33e2b7b.tar.xz func-dee316020aaf6e70c909ea177adf2742a33e2b7b.zip |
Daemonize async jobs on minion.
Diffstat (limited to 'func/jobthing.py')
-rw-r--r-- | func/jobthing.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/func/jobthing.py b/func/jobthing.py index aa801bc..033368c 100644 --- a/func/jobthing.py +++ b/func/jobthing.py @@ -135,9 +135,18 @@ def minion_async_run(retriever, method, args): pid = os.fork() if pid != 0: __update_status(job_id, JOB_ID_RUNNING, -1) + os.waitpid(pid, 0) return job_id else: __update_status(job_id, JOB_ID_RUNNING, -1) + + # daemonize! + os.umask(077) + os.chdir('/') + os.setsid() + if os.fork(): + os._exit(0) + try: function_ref = retriever(method) rc = function_ref(*args) @@ -146,7 +155,7 @@ def minion_async_run(retriever, method, args): rc = utils.nice_exception(t,v,tb) __update_status(job_id, JOB_ID_FINISHED, rc) - sys.exit(0) + os._exit(0) def job_status(jobid, client_class=None): |