Pythonic分离进程的方法?

Ale*_*air 5 python subprocess detach etcd

我正在运行一个etcd进程,它一直保持活动直到你杀死它.(它不提供守护进程模式选项.)我想分离它,以便我可以继续运行更多的python.

我会在shell中做什么;

etcd & next_cmd
Run Code Online (Sandbox Code Playgroud)

我正在使用python的sh库,在整个互联网的热情推荐下.我宁愿不沉浸于,subprocess或者Popen我也没有找到使用它们的解决方案.

我想要的是;

sh.etcd(detach=True)
sh.next_cmd()
Run Code Online (Sandbox Code Playgroud)

要么

sh.etcd("&")
sh.next_cmd()
Run Code Online (Sandbox Code Playgroud)

不幸的是detach不是一个kwarg和sh对待"&"的一个标志etcd.

我在这里错过了什么吗?这样做的好方法是什么?

jfs*_*jfs 6

要实现sh&,避免货物邪教编程和使用subprocess直接模块:

import subprocess

etcd = subprocess.Popen('etcd') # continue immediately
next_cmd_returncode = subprocess.call('next_cmd') # wait for it
# ... run more python here ...
etcd.terminate() 
etcd.wait()
Run Code Online (Sandbox Code Playgroud)

这忽略了异常处理和你关于"守护进程模式"的讨论(如果你想在Python中实现一个守护进程;使用python-daemon.要将进程作为系统服务运行,请使用你提供的操作系统或管理程序等supervisord).