如何检查请求是否花费了太长的时间?

Wal*_*lly 4 python flask python-requests

如果我使用远程 api 发出阻塞请求,requests则花费的时间太长,那么我的网站也会返回错误。我不希望这种事发生。

这是我的阻止代码:

@app.route('/api')
def returnapi():
    r = requests.get("http://dndchecker.railsroot.com/api?mobile_number=9876543210")
    return r.text
Run Code Online (Sandbox Code Playgroud)

r如果请求对象,我想将值设置为 False。

Ian*_*sco 8

所以你可以这样做:

@app.route('/api')
def returnapi():
    try:
        r = requests.get("http://dndchecker.railsroot.com/api?mobile_number=9876543210", timeout=my_timeout)
    except (requests.exceptions.Timeout, requests.exceptions.ConnectionError) as err:
        return 'Server taking too long. Try again later'
    else:
        return r.text
Run Code Online (Sandbox Code Playgroud)

这应该可以帮助您防止服务器花费太长时间。当然,您必须定义my_timeout您想要等待的最大值。我要提醒您的是,您不应该将其设置得太低,否则您总是会看到“服务器花费的时间太长。请稍后再试。” 合适的时间完全取决于您作为服务作者以及您认为合理的等待时间。