【问题标题】:Making a non blocking HTTP request in a Rails app在 Rails 应用程序中发出非阻塞 HTTP 请求
【发布时间】:2015-11-11 00:27:05
【问题描述】:

有人知道在 Rails 中发出非阻塞 HTTP 请求的方法吗?我最终将需要响应体,并试图避免提出新的框架来保持简单。

谢谢

【问题讨论】:

标签: ruby-on-rails ruby http rest nonblocking


【解决方案1】:

要模拟非阻塞部分,请设置较低的 read_timeout。还要准备好捕获由此产生的超时错误:

request = Net::HTTP::Get.new(url)
http = Net::HTTP.new(url.host, url.port)

http.read_timeout = 1

begin
  http.request(request)
rescue Timeout::Error => e
end

我不知道既可以进行非阻塞调用又可以接收响应的基本 Rails 机制。 Rails 与请求/响应周期密切相关,因此通常基本的控制器执行路径会在 HTTP 调用返回之前结束。

【讨论】:

  • "低超时" != "非阻塞"
【解决方案2】:

您正在寻找“后台工作”或“后台工作人员”。有各种各样的宝石。 This blog post 有一个很好的概览。 delayed_job 现在很受欢迎。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多