Запустите фоновый процесс в Синатре - PullRequest
3 голосов
/ 28 марта 2012

У меня есть приложение Sinatra / Rails и действие, которое запускает какой-то долгий процесс.

Обычно я делаю очередь для фоновых заданий.Но этот случай слишком прост, и фоновый процесс запускается очень редко, поэтому очередь является непроизводительной.

Итак, как я могу запустить фоновый процесс без очереди?

get "/build_logs/:project" do
  LogBuilder.new(params[:project]).generate
  "done"
end

Я пытался сделатьэто как новая ветка Thread или Process, но это не помогло.

1 Ответ

1 голос
/ 28 марта 2012

Я имел успех с этим (упрощенно) в Синатре:

get '/start_process'
  @@pid = Process.spawn('external_command_to_run')
end

Возвращает идентификатор процесса, который можно использовать для завершения процесса позже, если вам нужно. Кроме того, это на Linux, он не будет работать на Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...