【发布时间】:2019-05-09 18:54:55
【问题描述】:
我正在尝试发出 python 请求并在响应状态代码为 200 时继续执行脚本。否则,继续循环直到我得到 200。
尝试了以下语句,不确定我在这里缺少什么。条件不退出循环。
尝试 1:
while True:
if (offense_response.status_code == 404):
time.sleep(5)
logging.info("Status code is 404, entering sleep for 5 seconds")
offense_response = requests.get(qradar_offense_url, headers=q_headers, verify=False)
continue
if (offense_response.status_code == 200):
logging.info("Status code is 200, exiting loop")
exit()
尝试 2:
while (offense_response.status_code != 200):
if (offense_response.status_code == 404):
logging.info("Status code is 404, entering sleep for 5 seconds")
time.sleep(5)
offense_response = requests.get(qradar_offense_url, headers=q_headers, verify=False)
else:
logging.info("Status code is 200, exiting loop")
尝试 3:
while True:
if (offense_response.status_code != 200):
time.sleep(5)
logging.info("Checking Response Status Code again")
offense_response = requests.get(qradar_offense_url, headers=q_headers, verify=False)
if (offense_response.status_code == 200):
break
【问题讨论】:
-
我没有看到新的请求。是否需要重试调用并将新值保存到
offense_response? -
@karthik 从睡眠中醒来后,您在这些 sn-ps 中的哪个位置更新/重新计算 offence_response.status_code ?
-
错过了这一点,添加了重试调用。还是没有运气。
-
为什么在
if中使用括号进行单次比较? -
如果你得到一个 404 然后继续尝试相同的 URL,你很可能会继续得到一个 404 并且永远不会完成循环。