Resque状态更新

时间:2013-11-13 16:13:18

标签: ruby-on-rails redis ruby-on-rails-4 resque

在rails4应用程序中,我有一个非常长的任务(可能需要数小时)由resque处理(如railscast#271)。

控制器中的create动作如下所示:

  def create
    @longstuff = Longstuff.new(params[:longstuff])
    if @longstuff.save
      Resque.enqueue(LongStuffHandler, @longstuff.id)
      redirect_to @longstuff, :notice => "Success."
    else
      render 'new'
    end
  end

我想更新用户队列的状态,并向他提供有用的信息(统计数据,已用时间,进度条等)。

我的想法是在“新”视图中创建一个div,每隔3秒使用javascript自动刷新一次,并显示LongStuffHandler类提供的一些内容。

到目前为止,我已经能够实现这一点,使得LongStuffHandler类将一些html写入由javascript加载的文件中。 这会导致一些问题,例如,每秒写入文件10次并不理想。

我想让LongStuffHandler类能够实时导出一些变量并使它们可用于“新”视图,这样只需重新加载部分就可以使我的页面看起来更新。 一个例子是LongStuffHandler类有一个名为“@lastlog”的变量,并使其可用于“new”视图,其中有一个像jb这样自动更新的div:

<div class="lastlog">
  <h2>Last Log</h2>
  <p><%= @lastlog %></p>
</div>

后台作业是否可以导出这样的变量并且视图可以导入它?

0 个答案:

没有答案