Python 织物拨叉

Python 织物拨叉,python,fabric,fork,Python,Fabric,Fork,我想使用Fabric.api.run直接启动远程设备中的应用程序。由于应用程序需要很长时间才能完成,我希望能够派生一个子进程,这样我就不需要等待很长时间 代码如下: from fabric.api import run .... run("python ./myApp.py --fork=True >myApp.log 2>&1") 我使用以下代码来启用代码的分叉: if settings.fork: child_pid = os.fork() if ch

我想使用Fabric.api.run直接启动远程设备中的应用程序。由于应用程序需要很长时间才能完成,我希望能够派生一个子进程,这样我就不需要等待很长时间

代码如下:

from fabric.api import run
....

run("python ./myApp.py --fork=True >myApp.log 2>&1")
我使用以下代码来启用代码的分叉:

if settings.fork:
    child_pid = os.fork()
    if child_pid == 0:
        print "Starting Child Process: PID# %s" % os.getpid()
    else:
        print "Terminating Parent Process: PID# %s" % os.getpid()
        os._exit(0)
问题是在我执行run命令后,我进入远程框,发现程序由于未知原因退出,我检查了日志文件,那里什么都没有


有人能告诉我怎么解决这个问题吗?非常感谢

说到fork,除了许多其他改进之外,还有一种fork结构支持并行执行

根据你所做的事情,你可能想考虑一下。


除此之外,我认为您希望使用
多处理

from multiprocessing import Process

def f(name):
    print 'hello', name

if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    #p.join()

Fabric肯定需要某种形式的并行执行。并行部署/执行非常棒,我一定会尝试。但我的问题是,当我需要使用“run”在remote box中运行程序时,我想知道如何使程序连续运行,即使fabric的run命令已返回(我的示例是在程序内部执行os.fork(),以分叉子进程,并将所有输出/错误重定向到日志文件),只需使用python守护进程替换os.fork()。这对我有用。