如何在python中等待特定的http响应

时间:2019-02-11 15:42:19

标签: python response

我在等待响应200时遇到问题。执行我的get请求时,预期的资源不存在,响应为204。 我想做的是等待两分钟,可以说每隔10秒打电话检查响应是否为200。如果时间到了,我想返回一个错误。

def waitForResourceAvailable(response):
    while response.status_code == 204:
        time.sleep(10)
        if response.status_code == 200:
            break

这很好,但是如果状态码200在指定时间内没有出现,我需要一个解决方案退出循环。

1 个答案:

答案 0 :(得分:2)

请注意,如果在检查while条件时响应的值发生变化,它也会停止迭代,因此while内的if语句就不需要了。

注意:响应对象必须能够更改其值,否则它将始终相同,因为它只是一个变量而不是检查响应的函数

您可以添加带有时间值的简单if语句

def waitForResourceAvailable(response, time):
    timer = 0
    while response.status_code == 204:
        time.sleep(10)
        timer += 10
        if timer > time:
            break
        if response.status_code == 200:
            break

使它变得更好会像:

def waitForResourceAvailable(response, timeout, timewait):
    timer = 0
    while response.status_code == 204:
        time.sleep(timewait)
        timer += timewait
        if timer > timeout:
            break
        if response.status_code == 200:
            break