私は以下のようにfabfileを持っています。手動でリモートサーバーにSSHで接続し、fabfileとまったく同じようにコマンドを実行すると、正常に機能します。ただし、fabfileを実行すると、手動で実行した場合と同じ進行状況が出力され、エラーは報告されず、「done」で終了しますが、最後の行は実際には機能しません。どんなアドバイスも素晴らしいでしょう。
アップデート:
pserveログを調整し、fabfileをさらに数回試した後、ランダムに1回機能しました。何も変わっておらず、その後実行したところ、機能しませんでした。だから私は何が起こっているのか分かりません。タイミングの問題ですか?
コードは次のとおりです。
# 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.