运行 一个 Capistrano 任务在后台
Running a capistrano task in background
我有一个 cap 任务调用多个其他长 运行ning cap 任务:
假设我有一个名为 A
的任务
从这个上限任务中我(取决于条件)调用另一个上限任务让我们说 B
。
cap 任务 B
依次调用 4 个 cap 任务 c
, D
, E
, & ,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 中的每一个都是长 运行ning 并且必须 运行 按照指定的相同顺序顺序排列。
基本上任务 C 到 F 是数据库和资产压缩和上传任务,可能需要很长时间,因此它们不能妨碍 cap 部署过程,应该 运行 在后台独立。
所以我需要一种从任务 A
调用任务 B
的方法,以便它 运行 处于异步模式,并且部署期间的其余 cap 任务保持 运行宁.
我建议让任务 B 成为一个实际的 Rake 任务,然后让 Capistrano 调用并立即将其置于后台,例如
我有一个 cap 任务调用多个其他长 运行ning cap 任务:
假设我有一个名为 A
从这个上限任务中我(取决于条件)调用另一个上限任务让我们说 B
。
cap 任务 B
依次调用 4 个 cap 任务 c
, D
, E
, & ,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 中的每一个都是长 运行ning 并且必须 运行 按照指定的相同顺序顺序排列。
基本上任务 C 到 F 是数据库和资产压缩和上传任务,可能需要很长时间,因此它们不能妨碍 cap 部署过程,应该 运行 在后台独立。
所以我需要一种从任务 A
调用任务 B
的方法,以便它 运行 处于异步模式,并且部署期间的其余 cap 任务保持 运行宁.
我建议让任务 B 成为一个实际的 Rake 任务,然后让 Capistrano 调用并立即将其置于后台,例如