2016-06-02 8 views
1

У меня есть шапка задачи, которые требуют несколько других задач долго работает Цоколь:Выполнение задачи Капистрано в фоновом режиме

Так позволяет сказать, у меня есть задание под названием A

Внутри этой крышки задачи I (в зависимости от состояния) вызов другой задачи колпачка позволяет сказать B.

крышка задача B последовательно вызывает более 4 колпачковые задачи 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 являются долго работает и должен выполняться последовательно в том же порядке, что и указано.

В основном задачи C-F: db & Задания и загрузка объектов, которые могут занять много времени, поэтому они не должны препятствовать процессу развертывания крышки и должны выполняться независимо в фоновом режиме.

Так что мне нужен способ вызова задачи B из задачи A, так что он запускается в асинхронном режиме, а оставшиеся задачи с крышкой во время развертывания продолжают работать.

+0

Чтобы уточнить: выполняются ли задачи C-F перед завершением работы Capistrano или длительные фоновые процессы/демоны? –

+0

Длительный фоновый процесс [я обновлю свой вопрос] – adil

+0

Итак, C-F в конце концов закончит, но развертывание можно считать выполненным до того, как они это сделают? –

ответ

1

Я предлагаю сделать задачу B реальной задачей Rake, а затем вызвать вызов Capistrano и сразу же закрепить его, например. https://stackoverflow.com/a/5829142/3042016

+1

Спасибо, я сделал рубиновый скрипт для всех четырех задач, объединенных в один, загрузил его на сервер, а затем запустил в фоновом режиме с помощью 'nohup'. Работали как шарм – adil