2011-10-11 41 views
4

是否有人知道从Rails内部传出非阻塞HTTP请求的方法?我最终需要响应主体,并试图避免提出新的框架来保持简单。在Rails应用程序中制作非阻塞HTTP请求

谢谢

+0

可能重复[在Ruby中执行非阻塞I/O的首选方式是什么?](http://stackoverflow.com/questions/4468471/what-is-the-preferred-way-of-performing-非阻塞 - io-in-ruby) – danny

回答

-1

您正在寻找“后台工作”或“后台工作人员”。这里有各种各样的宝石。 This blog post对那里有什么有很好的概述。 delayed_job现在非常受欢迎。

0

为了模拟非阻塞部分,设置一个低的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调用返回之前结束。

+4

“低超时”!=“非阻塞” – rusty