这是Rails 2.3.10和Ruby 1.8。Rails 2.3:在执行after_filter之前立即重定向
我有一些代码,看起来大致是这样的:
class RedirectingController
after_filter :do_something_long, :only => [:show]
def show
redirect_to "http://www.google.com"
end
def do_something_long
sleep 60
logger.debug("Something long has completed")
end
end
现在我的问题是,即使我在重定向已被执行的日志中看到,它等待,直到睡眠60前完成重定向实际上发生了。有没有办法让重定向发送到浏览器,然后运行do_something_long。作为一个附注,我试图避免使用诸如delayed_job或resque之类的东西。
我给一些背景:这是被击中会通过一个非常大的用户量被击中的动作。所有的动作都是重定向(想一想粗略的比喻),但是有一些计算需要发生,我不想增加重定向的时间,最多只需要0.5s。 – Mike
好的。是否有一个令人信服的理由,您可以使用延迟工作?这似乎是一个相当不错的用例。他们开始行动,你开始耽误工作,而且他们快速闪电。 – Msencenb
如果我不得不使用delayed_job,我会这样做,但是与仅刷新输出,重定向浏览器,然后执行计算相比,这看起来会有很大的开销。我也担心数据库中写入delayed_job的数据量会在数据库中创建可能会影响网站的其他部分。 – Mike