首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails在后台工作[resque + resque-status]

Rails在后台工作[resque + resque-status]
EN

Stack Overflow用户
提问于 2015-02-26 20:57:19
回答 1查看 250关注 0票数 0

我正在构建一个使用rails的the应用程序,它需要在后台运行C++ exe程序。我比较了三个最常用的宝石(Delayed_Jobs,Resque,Sidekiq),发现resque最适合我。

在财务总监中,我创建了这样的方法

代码语言:javascript
复制
    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

在工人阶级我有

代码语言:javascript
复制
    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

现在我的问题是,当C++应用程序生成图像时,我应该如何检测作业已经完成?,我想在C++应用程序生成图像后向客户端发送图像文件。哪个用户可以查看/下载。

redirect_to model_path(@model.id)将在create控制器中在Resque.enqueue(JobWorker,@model.file.url)之后返回。

我试过使用resque-status,但这需要控制器中的轮询来检查状态,比如.

代码语言:javascript
复制
    while status = Resque::Plugins::Status::Hash.get(job_id) and !status.completed? && !status.failed?
      sleep 1
      puts status.inspect
    end

有什么建议吗?谢谢你提前..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-26 21:26:12

如果您想要像faye(http://faye.jcoglan.com/ruby.html)这样的异步系统,那么您可以在流程完成时向前端发送一条消息。编写代码以在系统代码完成执行后发布消息。

另一个简单的步骤,虽然可能是不可行的,是在过程结束时发送一封电子邮件。您可以向客户发送电子邮件,让他们知道“该过程是完整的访问链接,以查看结果。”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28752587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档