Я создаю webapp, используя ruby on rails, для которого требуется запуск программ C++ exe в фоновом режиме. Я сравнил 3 наиболее часто используемых камня для этого (Delayed_Jobs, Resque, Sidekiq) и обнаружил, что resque является наиболее подходящим для меня.Ruby on Rails, работающий в фоновом режиме [resque + resque-status]
В Countroller У меня есть создать метод, как этот
def create
@model = Model.create(model_params)
# resque processe the file from the @model
Resque.enqueue(JobWorker, @model.file.url)
redirect_to model_path(@model.id)
end
В классе Worker у меня есть
class JobWorker
@queue = :file
def perform file_to_process
# calling time consuming C++ here which generates 2 image files.
system('my_file_processing_program "#{file_to_process}"')
end
end
Теперь мой вопрос, как я должен определить, что работа завершена? Я хочу отправить gemerated image файл клиенту, как только изображения сгенерированы C++-приложением. , который пользователь может просмотреть/загрузить.
Как redirect_to model_path (@ model.id) вернется после Resque.enqueue (JobWorker, @ model.file.url) в create в контроллере.
Я попытался с помощью Resque-статус, но это требует опроса в контроллере, чтобы проверить состояние как ...
while status = Resque::Plugins::Status::Hash.get(job_id) and !status.completed? && !status.failed?
sleep 1
puts status.inspect
end
Любые предложения ?? Спасибо в Advance ...
faye - это то, что я ищу прямо сейчас .. :) надеюсь решить его! Благодаря! – newbee
Поскольку вы используете рельсы, вы можете найти этот драгоценный камень более полезным. https://github.com/jamesotron/faye-rails – coderhs
@newbee, если решение правильно, примите ответ :) – coderhs