如何使用eventmachine异步处理ruby post请求

时间:2011-08-31 20:35:42

标签: ruby-on-rails http eventmachine

在rails应用程序中的请求过程中,我想将数据发布到另一台服务器并完成原始请求,而无需等待外部帖子解析。我有以下代码正确发布,但仍然等待帖子完成后再继续。我尝试在EventMachine.stop之外移动callback,但这只是通过调用errback来结束所有内容。我该怎么办?

EventMachine.run {
    http = EventMachine::HttpRequest.new(url).post :body => {body}
    http.errback { p 'Uh oh'; EM.stop }
    http.callback {
      p http.response
      EventMachine.stop
    }
  }
编辑:我没有和eventmachine结婚。如果有更好的解决方案我会全力以赴。

1 个答案:

答案 0 :(得分:0)

有一个简单的解决方案,就是创建一个新线程并让它完成工作,一个可以(或不)帮助你正确执行此操作的库是https://github.com/tra/spawn。 我自己从未使用它,但我认为它可能适合您的需要。

我喜欢Eventmachine并在我的大多数项目(工作或个人)上使用它,但它需要更多的工作才能使它适用于rails并且你仍然需要非常小心你正在使用哪些库以及如何不阻止它反应器中。

请注意,如果做任何阻塞,你还需要小心踏板,但今天的大多数图书馆都是为了不阻止翻译而构建(至少在1.9中)