gpt4 book ai didi

ruby - 使用 Ruby Net 实现重新连接策略

转载 作者:数据小太阳 更新时间:2023-10-29 07:02:19 25 4
gpt4 key购买 nike

我正在开发一个将 XML 发布到某些网络服务的小型应用程序。这是使用 Net::HTTP::Post::Post 完成的。但是,服务提供商建议使用重新连接。

类似于:第一个请求失败 -> 2 秒后重试第二个请求失败 -> 5 秒后重试第三次请求失败 -> 10 秒后重试...

这样做的好方法是什么?简单地在循环中运行以下代码,捕获异常并在一定时间后再次运行?或者还有其他聪明的方法吗?也许 Net 包甚至有一些我不知道的内置功能?

url = URI.parse("http://some.host")

request = Net::HTTP::Post.new(url.path)

request.body = xml

request.content_type = "text/xml"


#run this line in a loop??
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}

非常感谢,感谢您的支持。

马特

最佳答案

这是 Ruby 的 retry 派上用场的罕见情况之一。沿着这些线的东西:

retries = [3, 5, 10]
begin
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}
rescue SomeException # I'm too lazy to look it up
if delay = retries.shift # will be nil if the list is empty
sleep delay
retry # backs up to just after the "begin"
else
raise # with no args re-raises original error
end
end

关于ruby - 使用 Ruby Net 实现重新连接策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1201486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com