我向服务器发送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?
答案 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