对于相同的请求,em-synchrony不是异步的

时间:2015-03-05 03:15:41

标签: ruby-on-rails ruby asynchronous thin eventmachine

在rails应用程序中,我有一个异步方法,只有在请求不同时才会异步工作。

在我的控制器中,我有这种方法:

require "em-synchrony/em-http"
def test

    EventMachine.synchrony do
      page = EventMachine::HttpRequest.new("http://127.0.0.1:8081/").get

      render :json => {result: page.response}
      request.env['async.callback'].call(response)
    end
    throw :async
end

在我的页面中,我将此方法称为:

//Not asynchronous. :(
//The second request takes twice more time than the first one
$.get("/test");
$.get("/test");

但是,为了使调用异步,我需要像这样的不同的请求:

//Asynchronous. :D
$.get("/test?a");
$.get("/test?b");

为什么呢? 我希望我的代码始终是异步的。即使是相同的请求。仅供我使用瘦服务器

1 个答案:

答案 0 :(得分:1)

我发现你的问题真的很有趣,因为我要实现我的第一个基于Reactor模式的网络服务器,当然我经历了em-syncrony。

您是否尝试过使用aget代替get

page = EventMachine::HttpRequest.new("http://127.0.0.1:8081/").aget

让我知道它是否有任何区别:))!