Python Fabric脚本报告已完成但无法正常工作

时间:2013-03-26 12:14:28

标签: python pyramid fabric

我有如下的fabfile。当我手动ssh到远程服务器并完全按照fabfile执行命令时,它工作正常。但是,当我运行fabfile时,它输出与手动运行时相同的进度,报告没有错误并退出“完成”,但最后一行实际上不起作用。任何建议都会很棒。

更新

在拖尾pserve日志并再次尝试fabfile之后,随机工作一次。什么都没有改变,当我随后运行它时,它没有用。所以我不知道发生了什么。这是时机吗?

以下是代码:

# kills a running pserve process and restarts it in daemon mode

from fabric.api import *

def deploy():
    pid = run("pidof -x pserve")  # works
    run("sudo kill -15 %s" % pid)  # works
    with cd('~/Repos/bessie'):
        run("sudo pserve development.ini --daemon")  # outputs "Entering
                                                     # daemon mode" but doesn't
                                                     # actually start the process

输出:

[ec2-xxx.ap-southeast-2.compute.amazonaws.com] Executing task 'deploy'
[ec2-xxx.ap-southeast-2.compute.amazonaws.com] run: pidof -x pserve
[ec2-xxx.ap-southeast-2.compute.amazonaws.com] out: 28998
[ec2-xxx.ap-southeast-2.compute.amazonaws.com] out: 

[ec2-xxx.ap-southeast-2.compute.amazonaws.com] run: sudo kill -15 28998
[ec2-xxx.ap-southeast-2.compute.amazonaws.com] run: sudo pserve development.ini --daemon
[ec2-xxx.ap-southeast-2.compute.amazonaws.com] out: Entering daemon mode
[ec2-xxx.ap-southeast-2.compute.amazonaws.com] out: 


Done.

2 个答案:

答案 0 :(得分:2)

基本上只是sudo('pserve --daemon development.ini', pty=False)。结构使用的伪TTY对于分离过程不起作用。

http://docs.fabfile.org/en/1.5/faq.html#init-scripts-don-t-work

旁注,使用主管,新贵或其他一些真正的流程管理器而不是pserve --daemon。如果你的过程死了,你就没有真正的方法知道使用这个seutp。

答案 1 :(得分:0)

您不需要:

 run("sudo....")

Fabric有一种特殊的方法sudo()。 因此,对于一个,您可以将该行重写为:

sudo("pserve development.ini --daemon")

其次,看起来它不是面料,它是pserve本身。

相关问题