如何创建循环以从 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)