fabric 运行分叉
我想用 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)
问题是,当我执行运行命令后,连接到远程机器,发现程序因为某种未知原因已经退出了。我查看了日志文件,里面什么也没有。
有没有人能告诉我该怎么解决这个问题?非常感谢!!
1 个回答
3
说到“分叉”,有一个Fabric的分支版本,它支持并行执行,并且还有很多其他的改进。
http://tav.espians.com/fabric-python-with-cleaner-api-and-parallel-deployment-support.html
根据你的需求,你可能会想考虑一下这个。
除此之外,我觉得你可以使用 multiprocessing
:
from multiprocessing import Process
def f(name):
print 'hello', name
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
#p.join()