如何使用Fabric启动python rq进程

时间:2014-11-10 22:40:56

标签: fabric python-rq

我刚刚开始使用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脚本完成,我就检查了盒子,过程都没了。

任何帮助都将不胜感激,谢谢。

1 个答案:

答案 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。