我刚刚开始使用Fabric来自动化我们最基本的python部署,而我们堆栈的一部分是使用rq(http://python-rq.org/)作为我们在redis之上的队列解决方案的作业服务器。由于某些我无法解释的原因,rq-dashboard和rqworker命令不会在结构内部启动。我可以复制/粘贴Fabric正在使用的确切行,它可以正常工作,但它在Fabric中失败。
Fabric代码如下所示:
env.activate = '. /src/venvs/appvenv/bin/activate'
@task
def deploy_jobs_box():
with cd(repo_dir):
with show('debug'):
with shell_env(APP_ENV='development'), prefix(env.activate):
run("rq-dashboard > /dev/null 2>&1 &")
run("rqworker > logs/rqworker.log 2>&1 &")
我已经尝试过在脚本等中运行rq命令的各种变体,我能想到的,并且它们都不起作用。奇怪的是,如果我把它们放在一个脚本中(只有这些行),并在最后包含一个“ps aux | grep rq”,我会看到rq进程...但是一旦fab脚本完成,我就检查了盒子,过程都没了。
任何帮助都将不胜感激,谢谢。
答案 0 :(得分:2)
我需要使用nohup(http://linux.101hacks.com/unix/nohup-command/),正如rq的作者nvie所指出的那样:https://github.com/nvie/rq/issues/444#issuecomment-62519088
这样:
nohup rq-dashboard> / dev / null 2>& 1& nohup rqworker> logs / rqworker.log 2>& 1&
运行命令中的解决了这个问题。
感谢nvie。