ruby RestClient每个请求设置

时间:2015-06-25 07:48:45

标签: ruby multithreading rest-client

我非常喜欢RestClient API,但在我看来,我无法为每个请求配置代理,超时,请求挂钩,ssl等。因此,例如,如果我想在不同的线程中同时执行某些请求,它们可能会相互干扰,因为我已经改变了一些配置。

我错过了什么吗?是否有一种解决方法,因为在我看来这是一个严重的限制。

更新: 实际上查看Request类我认为只有代理配置和before_execution_procs是全局配置。最有可能的是before_execution_procs可能会有变通方法。如果您知道如何根据请求设置这些,我将不胜感激。

示例:

(1..10).each {
  Thread.new {
    RestClient.get(..., proxy: "some proxy", before_execution_hooks: [some, array, of, hooks])
  }
}

如果我这样做:

(1..10).each {
  Thread.new {
    RestClient.proxy = "per request proxy"
    RestClient.add_before_execution_proc {...}
    RestClient.get(...)
  }
}

然后,我将以每个请求结束未知代理以及多个过程。

1 个答案:

答案 0 :(得分:1)

您现在可以根据请求选项设置代理

RestClient::RequestRestClient::Resource同时包含:proxy和:before_execution_proc选项,可覆盖全局设置:

所以下面的代码应该是线程安全的:

(1..10).each do
  Thread.new do
    RestClient::Resource.new(url, proxy: 'resquest specific', before_execution_proc: ...).get
    # or
    RestClient::Request.execute(method: :get, url: 'http://...', proxy: ...)
  end
end