小编Bru*_*man的帖子

Thin EventMachine Sinatra vs. Rails

我一直在研究用EventMachine来处理一些工作的可能性.在Sinatra中,这似乎工作得很好,但Rails 3似乎在渲染视图之前执行所有刻度.

当我在瘦Web服务器下运行以下代码时,它的行为与预期一致.第一个请求立即返回,第二个请求正在等待3秒睡眠呼叫完成.这是预期的行为.

class EMSinatra < Sinatra::Base
  get "/" do
    EM.next_tick { sleep 3 }
    "Hello"
  end
end
Run Code Online (Sandbox Code Playgroud)

在Rails 3运行中,我正在尝试做同样的事情:(在瘦下运行)

class EmController < ApplicationController
  def index
    EM.next_tick {
      sleep(3)
    }
  end
end
Run Code Online (Sandbox Code Playgroud)

在Rails中,睡眠调用在将视图呈现给浏览器之前发生.结果是我等待3秒钟才能渲染初始页面.

有人知道为什么会这样吗?我不是在寻找评论,这是一个好的做法.我只是在试验.将小任务投入反应堆循环似乎是一件值得探讨的事情.如果我要进行一些非阻塞的http请求,为什么客户端必须等待?

ruby ruby-on-rails thin sinatra eventmachine

9
推荐指数
1
解决办法
3091
查看次数

标签 统计

eventmachine ×1

ruby ×1

ruby-on-rails ×1

sinatra ×1

thin ×1