0

我有这样的代码

def validate

  if abc.nil?
    redirect_to :action => 'noInitialSelection'
  else
    redirect_to :action => 'Selection'
    script(params)
  end

end

脚本方法必须处理一个包含 10000 个名称的文件并进行相关工作。现在的问题是代码完成需要很长时间,页面没有被重定向到选择并导致 500 内部服务器错误

我希望将页面重定向到“选择”,以便用户知道他输入了正确的详细信息,然后在后台执行脚本方法

谢谢

4

1 回答 1

1

您需要查看作业队列才能运行script(params). 为此有多种宝石;一个非常流行的是delay_job

一旦你设置了delayed_job,你的方法可能看起来像

def validate
  if abc.nil?
    redirect_to :action => 'noInitialSelection'
  else
    Delayed::Job.enqueue ScriptJob.new(params)
    redirect_to :action => 'Selection'
  end
end

您将独立创建一个自定义作业,例如

class ScriptJob < Struct.new(:params)
  def perform
    script(params)
  end
end

enqueue调用将队列排入script(params)作业队列以供工作人员处理。

于 2012-11-22T02:23:42.797 回答