如何创建循环以从 python 中的 http 端点验证状态?
How to create loop for verification of status from http endpoint in python?
我必须创建 GitLab 管道的验证。
我触发管道,获取其 ID,然后检查该特定管道的状态。
请求 GitLab API 管道端点我得到了一些阶段 - “待定”,“运行”,然后是“成功”或“失败”。
我是 python 的新手。
我怎样才能使用 python 请求重试 API 调用并只获得“成功”或“失败”的结果?
我有:
triggered_pipeline_id = "7532"
url = "{0}{1}".format(pipelineurl, triggered_pipeline_id)
response = requests.get(url=url, verify=False, headers=apidata)
raw_content = response.content.decode('UTF-8')
json_output = json.loads(raw_content)
returned_id = str(json_output["id"])
returned_status = str(json_output["status"])
这会立即给我状态 - 但它是“待定”或“运行”。几秒钟后它有“成功”或“失败”。但与其睡几秒钟,我想重试直到响应为“成功”或“失败”会更好。
我认为“while”循环是最好的 - 但我不确定如何实现它。
我有这个想法:
while (( returned_status == "pending" ) || ( returned_status == "running" )):
time.sleep(5)
这是正确的还是我应该怎么办?
提前感谢您的提示:)
如果您的其余代码正常工作...
response = requests.get(url=url, verify=False, headers=apidata)
json_output = response.json()
returned_status = json_output["status"]
while returned_status in ("pending", "running"):
time.sleep(5)
# repeat the request
response = requests.get(url=url, verify=False, headers=apidata)
json_output = response.json()
returned_status = json_output["status"]
# continue with the rest of your code
print(returned_status)
我必须创建 GitLab 管道的验证。 我触发管道,获取其 ID,然后检查该特定管道的状态。 请求 GitLab API 管道端点我得到了一些阶段 - “待定”,“运行”,然后是“成功”或“失败”。 我是 python 的新手。 我怎样才能使用 python 请求重试 API 调用并只获得“成功”或“失败”的结果? 我有:
triggered_pipeline_id = "7532"
url = "{0}{1}".format(pipelineurl, triggered_pipeline_id)
response = requests.get(url=url, verify=False, headers=apidata)
raw_content = response.content.decode('UTF-8')
json_output = json.loads(raw_content)
returned_id = str(json_output["id"])
returned_status = str(json_output["status"])
这会立即给我状态 - 但它是“待定”或“运行”。几秒钟后它有“成功”或“失败”。但与其睡几秒钟,我想重试直到响应为“成功”或“失败”会更好。
我认为“while”循环是最好的 - 但我不确定如何实现它。
我有这个想法:
while (( returned_status == "pending" ) || ( returned_status == "running" )):
time.sleep(5)
这是正确的还是我应该怎么办? 提前感谢您的提示:)
如果您的其余代码正常工作...
response = requests.get(url=url, verify=False, headers=apidata)
json_output = response.json()
returned_status = json_output["status"]
while returned_status in ("pending", "running"):
time.sleep(5)
# repeat the request
response = requests.get(url=url, verify=False, headers=apidata)
json_output = response.json()
returned_status = json_output["status"]
# continue with the rest of your code
print(returned_status)