【问题标题】:How to handle ruby post requests asynchronously with eventmachine如何使用 eventmachine 异步处理 ruby​​ 发布请求
【发布时间】:2011-08-31 20:35:41
【问题描述】:

在 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 结婚。如果有更好的解决方案,我会全力以赴。

【问题讨论】:

    标签: ruby-on-rails http eventmachine


    【解决方案1】:

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

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

    请注意,如果执行任何阻塞操作,您还需要小心胎面,但当今大多数库都构建为不会阻塞解释器(至少在 1.9 中)

    【讨论】:

      最近更新 更多