我刚刚开始使用 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 脚本完成,我会检查盒子,流程都消失了。
任何帮助将不胜感激,谢谢。