在后台运行capistrano任务

时间:2016-06-02 09:54:20

标签: deployment rake backgroundworker daemon capistrano3

我有一个上限任务,可以调用多个其他长时间运行的上限任务:

所以我假设我有一个名为A

的任务

从这个上限任务I(取决于条件)调用另一个上限任务,让我们说B

上限任务B依次调用另外4个上限任务cDE和& F

所以是这样的:

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&资产压缩和上传任务可能需要很长时间,因此它们不得妨碍上限部署过程,并且应该在后台独立运行。

所以我需要一种从任务B调用任务A的方法,以便它以异步模式运行,并且在部署期间其余的上限任务继续运行。

1 个答案:

答案 0 :(得分:1)

我建议将任务B作为实际的Rake任务,然后进行Capistrano调用并立即将其作为背景,例如https://stackoverflow.com/a/5829142/3042016