问题描述
我必须创建 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,headers=apidata)
json_output = response.json()
returned_status = json_output["status"]
# continue with the rest of your code
print(returned_status)