我有一個動作隊列,我使用ssh將不同的作業提交到不同的服務器。例如Python:重新設置或守護進程
ssh s1 job1.py
ssh s2 job2.py
問題是job1.py
和job2.py
可能需要較長時間才能完成,我不希望我的行動隊列阻止。我想知道如何以某種方式重新找回我的工作。
我目前的解決方案是:job1.py
使用subprocess.Popen(['my_actual_job.py'])
。使用這個,ssh不會阻塞,但my_actual_job.py
永遠不會完成。它在完成任務之前以某種方式終止。如果我ssh s1 "job1.py 2>1"
,my_actual_job.py
完成,但它會阻止我的動作隊列。
任何人都知道我該如何重置我的子進程(my_actual_job.py
),以便ssh可以終止,但我的工作可以在後臺完成他們的任務?
我看到PEP 3143: Standard daemon process library,但是有沒有更好更乾淨的方法呢?
我無法更改我的ssh命令......我需要以某種方式在job1.py中執行此操作。我做了Double Forking,但仍然無法正常工作......
我無法控制ssh ...我檢查:http://code.activestate.com/recipes/66012-fork-a-daemon-process-on-unix/...但這不起作用或 – Amir 2012-07-24 19:53:53