Python中等待API响应的最佳解决方案

b5lpy0ml  于 2023-06-07  发布在  Python
关注(0)|答案(2)|浏览(620)

我需要在一定时间内等待服务器的成功响应。最简单的方法是:

def wait_for_response():
    response = None
    time = 60
    while time > 0:
        response = requests.get(url=some_url)
        if response:
            break
        time.sleep(5)
        time -= 5
    if not response:
        print("SOME ERROR")
    return response.json()

但我不认为这个解决方案是好的。有没有其他更好的解决办法?请注意,只有在函数完成工作后,程序才应继续工作

t3psigkw

t3psigkw1#

requests.get()是等待请求的函数…最好的办法是给函数添加一个timeout={seconds}参数,比如:

requests.get(some_url, timeout=60)

它将等待60秒的请求完成,然后抛出一个错误。

mv1qrgav

mv1qrgav2#

您可以使用此软件包https://pypi.org/project/backoff/
on_exception装饰器用于在引发指定的异常时重试。下面是一个在任何请求异常被引发时使用指数回退的示例:

@backoff.on_exception(backoff.expo,
                  requests.exceptions.RequestException)
def get_url(url):
return requests.get(url)

相关问题