jar*_*son 7 ruby performance callback sinatra
好的,这是一项简单的任务.在我将html呈现给客户端之后,我想使用来自请求的信息执行db调用.
我正在使用sinatra,因为它是一个轻量级的微框架,但是如果它更快/更容易(Rack?),我真的可以用于红宝石中的任何东西.我只想获取网址并根据网址将客户端重定向到其他位置.
那么如何使用rack/sinatra进行真正的after_filter.而after_filter我的意思是在将响应发送给客户端之后.或者,如果没有线程,这是不可行的?
我分叉sinatra并在过滤器之后添加,但是没有办法刷新响应,即使是send_data,假设流文件(显然是二进制文件)等待after_filters.
我已经看到了这个问题:多部分响应在红宝石中,但答案是针对rails.我不确定它是否真的刷新了对客户端的响应,然后允许进行后续处理.
Rack :: Callbacks有一些回调之前和之后,但即便看起来它们会在响应被发送到客户端之前运行这里的Rack :: Callbacks实现(添加评论):
def call(env)
  @before.each {|c| c.call(env) }
  response = @app.call(env)
  @after.each {|c| c.call(env) }
  response 
  #i am guessing when this method returns then the response is sent to the client.
end
所以我知道我可以用rake通过shell调用后台任务.但是没有太多也是好的...还有NeverBlock但是对于执行一个单独的进程而不延迟响应是好的还是它仍然让应用程序等待整体(我认为它会)?
我知道这很多,但简而言之,简单的after_filter在ruby/sinatra/rack发送响应后真正运行.
感谢您阅读或回答我的问题!:-)