【发布时间】:2015-11-11 00:27:05
【问题描述】:
有人知道在 Rails 中发出非阻塞 HTTP 请求的方法吗?我最终将需要响应体,并试图避免提出新的框架来保持简单。
谢谢
【问题讨论】:
标签: ruby-on-rails ruby http rest nonblocking
有人知道在 Rails 中发出非阻塞 HTTP 请求的方法吗?我最终将需要响应体,并试图避免提出新的框架来保持简单。
谢谢
【问题讨论】:
标签: ruby-on-rails ruby http rest nonblocking
要模拟非阻塞部分,请设置较低的 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 调用返回之前结束。
【讨论】:
您正在寻找“后台工作”或“后台工作人员”。有各种各样的宝石。 This blog post 有一个很好的概览。 delayed_job 现在很受欢迎。
【讨论】: