Deployment 在后台运行capistrano任务

Deployment 在后台运行capistrano任务,deployment,rake,backgroundworker,daemon,capistrano3,Deployment,Rake,Backgroundworker,Daemon,Capistrano3,我有一个cap任务,它调用多个其他长时间运行的cap任务: 假设我有一个名为a 在这个cap任务中,我(取决于条件)调用另一个cap任务,比如说B cap任务B依次调用另外4个cap任务c,D,E,&,F 所以be是这样的: task :B do on roles(:all) do invoke 'tasks:C' invoke 'tasks:D' Rake::Task['db:E'].invoke("arg1", "arg2")

我有一个cap任务,它调用多个其他长时间运行的cap任务:

假设我有一个名为
a

在这个cap任务中,我(取决于条件)调用另一个cap任务,比如说
B

cap任务
B
依次调用另外4个cap任务
c
D
E
,&,
F

所以be是这样的:

task :B do
    on roles(:all) do
        invoke 'tasks:C'
        invoke 'tasks:D'
        Rake::Task['db:E'].invoke("arg1", "arg2")
        Rake::Task['db:F'].invoke("arg1", "arg2")
    end
end
C、D、E和F中的每一个都是长时间运行的,并且必须按照规定的顺序依次运行

基本上,任务C到F是db&assets压缩和上载任务,可能需要很长时间,因此它们不能妨碍cap部署过程,应该在后台独立运行


因此,我需要一种从task
a
调用task
B
的方法,以便它在异步模式下运行,部署期间的其余cap任务保持运行。

我建议将task B设为实际的Rake任务,然后让Capistrano调用并立即对其进行后台处理,例如

澄清:任务C-F应该在Capistrano运行完成之前完成,还是它们是长时间运行的后台进程/守护进程?长时间运行的后台进程[我将更新我的问题],因此C-F最终会完成,但部署可以被视为在完成之前完成?是的,在部署之前,我停止服务器,启动数据库和资产备份并在后台上载,完成部署并重新启动服务器。谢谢,我为所有四个任务制作了一个ruby脚本,并将其合并到一个任务中,将其上载到服务器,然后使用
nohup
在后台运行。工作得很有魅力