while 与 else 循环
While loop with else
我正在使用一个 while 循环,我试图 运行 5 分钟并检查它是否获得 http 响应代码 200。问题是如果它没有获得 200,它将被保留运行ning,但当站点应该启动并且 运行ning 时,它不会转到 else。
r = requests.head("http://www.testing.co.uk")
while r.status_code != 200:
print "Response not == to 200."
time.sleep(30)
else:
print "Response is 200 - OK"
重复请求。
r = requests.head("http://www.testing.co.uk")
while r.status_code != 200:
print "Response not == to 200."
time.sleep(30)
r = requests.head("http://www.testing.co.uk")
else:
print "Response is 200 - OK"
应该循环请求:
numOfRequests = 1000
for i in range(numOfRequests):
r = requests.head("http://www.testing.co.uk")
if r.status_code == 200:
print "Response is 200 - OK"
break
print "Response not == to 200."
time.sleep(30)
试试这个,其中包括最长约 5 分钟的超时检查:
import time
from datetime import datetime, timedelta
import requests
FIVE_MINUTES = timedelta(minutes=1) * 5
RETRY_DELAY = 30
end_time = datetime.now() + FIVE_MINUTES
while datetime.now() < end_time:
r = requests.head("http://www.testing.co.uk")
if r.status_code == 200:
print "Response is 200 - OK"
break
else:
print "Response not == to 200."
time.sleep(RETRY_DELAY)
else:
print 'Timed out'
N.B 大约是因为每个请求都将花费不可预测的时间,例如一个请求可能会挂起 2 分钟,而其他请求可能会立即失败。此外,您应该添加异常处理,因为 requests
引发失败的异常,例如 "Connection refused".
我正在使用一个 while 循环,我试图 运行 5 分钟并检查它是否获得 http 响应代码 200。问题是如果它没有获得 200,它将被保留运行ning,但当站点应该启动并且 运行ning 时,它不会转到 else。
r = requests.head("http://www.testing.co.uk")
while r.status_code != 200:
print "Response not == to 200."
time.sleep(30)
else:
print "Response is 200 - OK"
重复请求。
r = requests.head("http://www.testing.co.uk")
while r.status_code != 200:
print "Response not == to 200."
time.sleep(30)
r = requests.head("http://www.testing.co.uk")
else:
print "Response is 200 - OK"
应该循环请求:
numOfRequests = 1000
for i in range(numOfRequests):
r = requests.head("http://www.testing.co.uk")
if r.status_code == 200:
print "Response is 200 - OK"
break
print "Response not == to 200."
time.sleep(30)
试试这个,其中包括最长约 5 分钟的超时检查:
import time
from datetime import datetime, timedelta
import requests
FIVE_MINUTES = timedelta(minutes=1) * 5
RETRY_DELAY = 30
end_time = datetime.now() + FIVE_MINUTES
while datetime.now() < end_time:
r = requests.head("http://www.testing.co.uk")
if r.status_code == 200:
print "Response is 200 - OK"
break
else:
print "Response not == to 200."
time.sleep(RETRY_DELAY)
else:
print 'Timed out'
N.B 大约是因为每个请求都将花费不可预测的时间,例如一个请求可能会挂起 2 分钟,而其他请求可能会立即失败。此外,您应该添加异常处理,因为 requests
引发失败的异常,例如 "Connection refused".