Ruby 将页面呈现给用户后运行代码(Sinatra)

Ruby 将页面呈现给用户后运行代码(Sinatra),ruby,sinatra,high-load,Ruby,Sinatra,High Load,我正在寻找一种在页面呈现给用户之后运行一些慢代码的方法。具体地说,我希望能够做到这样: get '/fast-action' do compute_after_render { put some slow code here } 'request successful' end 我考虑将有关计算的信息插入数据库。 然后运行类似于rufus scheduler的程序,每分钟检查一次是否有需要计算的内容。 但我不希望用户等待数据库完成插入。 有没有办法让Sinatra在页面呈现给用户后运行

我正在寻找一种在页面呈现给用户之后运行一些慢代码的方法。具体地说,我希望能够做到这样:

get '/fast-action' do
  compute_after_render { put some slow code here }
  'request successful'
end
我考虑将有关计算的信息插入数据库。 然后运行类似于rufus scheduler的程序,每分钟检查一次是否有需要计算的内容。 但我不希望用户等待数据库完成插入。 有没有办法让Sinatra在页面呈现给用户后运行一些代码?

您可以使用:

但是请注意,在该请求期间,服务器线程将被阻塞,当然执行缓慢的代码。

您可以使用:


但是请注意,在该请求期间,服务器线程将被阻塞,当然执行缓慢的代码。

是的,一种简单快捷的方法是启动一个新线程:

get '/fast-action' do
  body 'request successful'
  Thread.new{ slow code }
end

是的,一种快速简便的方法是启动一个新线程:

get '/fast-action' do
  body 'request successful'
  Thread.new{ slow code }
end

我建议你研究一下副业。我喜欢用宝石做这个。它使用Redis存储需要运行的作业,并每隔一段时间检查一次。它是完全可配置的。如果您正在运行稍后可以完成的工作,如发送电子邮件、处理图像等,以及运行长流程,我强烈建议您使用它。

我建议您查看辅助工作。我喜欢用宝石做这个。它使用Redis存储需要运行的作业,并每隔一段时间检查一次。它是完全可配置的。如果您正在运行稍后可以完成的工作,如发送电子邮件、处理图像等,以及运行长流程,我强烈建议您使用它