我非常喜欢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(...)
}
}
然后,我将以每个请求结束未知代理以及多个过程。
答案 0 :(得分:1)
您现在可以根据请求选项设置代理
RestClient::Request或RestClient::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