开发者

fabric run fork

I want to use Fabric.api.run to directly start an application in a remote box. Since the application takes really a long to finish, I wish to be able to fork a child process, such that I don't need to wait for 开发者_运维百科a long time.

The code is like:

from fabric.api import run
....

run("python ./myApp.py --fork=True >myApp.log 2>&1")

I used the following code to enable forking side the code:

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)

The problem is after I do the run command, I sshed into the remote box, and found out the program has been quit for some unknown reason, I check the log file, there is nothing there.

Somebody could let me know how I can work this around? Many thanks!!


Talking of forks, there is a fork of Fabric that enables parallel execution, apart from lots of other improvements.

http://tav.espians.com/fabric-python-with-cleaner-api-and-parallel-deployment-support.html

Depending on what you are doing, you may want to consider that.


Apart from that, I think you want to use multiprocessing:

from multiprocessing import Process

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

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

http://docs.python.org/library/multiprocessing.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜