Rails非阻塞帖子

时间:2012-04-13 07:13:16

标签: ruby-on-rails post asynchronous eventmachine

我需要在我的Rails应用程序中相当频繁地发送到另一台服务器,但这需要先行。问题是,我不需要回应。有没有办法通过发送请求然后放弃连接而不等待响应来加快速度,而不会进入延迟的作业或事件机器?如果这些是唯一的选择,我可以处理它,但它会让生活变得更加简单。

这就是我现在所拥有的:

remoteAddress = 'http://remote.server.address/'

params = {
  'a' => a,
  'b' => b }

url = URI.parse(remoteAddress)
Net::HTTP.post_form(url, params)

1 个答案:

答案 0 :(得分:3)

如果在进行调用之前实例化Net::HTTP对象,则可以将其read_timeout属性设置为非常小的数字,然后捕获生成的Timeout :: Error异常并继续。

以下是使用URL和查询字符串格式的POST数据的各个部分的示例:

endpoint = Net::HTTP.new(host, port)
endpoint.read_timeout = 0.001
endpoint.post(path, params_as_query_string) rescue Timeout::Error