如何在收到503响应后重新发送请求

时间:2016-06-02 21:19:52

标签: ruby

我向服务器发送GET请求。如果我收到503回复,我想再次发送请求。

这是我的代码:

status_code = 503
while status_code == 503
    puts status_code
    sleep 0.1 + rand
    page, status_code = send_request(query_url(query, page_number))
    puts status_code
end

观察控制台,我看到即使连续记录了两个503,也会退出循环。

我尝试过逆转:

status_code = 200
until status_code == 200
    puts status_code
    sleep 0.1 + rand
    page, status_code = send_request(query_url(query, page_number))
    puts status_code
end

但现在循环永远不会退出。我显然误解了一些完全基本的东西。如何编写循环以使其继续直到代码不是503 /直到200?

2 个答案:

答案 0 :(得分:2)

第一个示例中的while循环看起来正确。 send_request可能返回字符串"503"而不是整数,因此与整数503的比较返回false。尝试与字符串进行比较

status_code == "503"
# => true

或将send_request的返回值强制转换为整数

status_code.to_i == 501
# => true

答案 1 :(得分:0)

我认为您检查的值是不同的类型,因此您的while已退出。

检查对象的类型:

puts status_code.class
sleep 0.1 + rand
page, status_code = send_request(query_url(query, page_number))
puts status_code.class