Google Trends error: Sorry, our systems are a little stressed out right now and need to take a deep breath

Google Trends error: Sorry, our systems are a little stressed out right now and need to take a deep breath

我最近一直在使用 Python 的 pytrends 处理 Google Trends。我在随机请求期间遇到以下错误:

Response did not parse. See server response for details.
Sorry, our systems are a little stressed out right now and need to take a deep breath. Please try again in a few moments.

经过搜索,我发现这与 Google 趋势配额限制有关。例如,this 讨论了上述问题。

但就我而言,即使在很长一段时间后的第一次请求中,我也遇到过这种情况,并且我继续多次收到它,直到我最终得到适当的回应。大约 5 个请求中有一次成功响应,而其余的都是错误的。

注意:必须指出的是,我今天才遇到这个问题,虽然我在过去两天使用 Google Trends 时从未遇到过这个问题。

相关代码片段如下:

    pytrends = get_pytrends()
    payload = {'q': 'chelsea', 'date' : 'now 12-H'}
    print(json.dumps(pytrends.trend(payload, return_type='json'), indent=4))

get_pytrends()

def get_pytrends():

    try:
        google_username = os.environ['GOOGLE_USERNAME']
        google_password = os.environ['GOOGLE_SECRET']
    except KeyError:
        sys.stderr.write("GOOGLE_* environment variables not set\n")
        sys.exit(1)

    pytrends = TrendReq(google_username, google_password, custom_useragent=None)

    return pytrends

导致此问题的原因是什么,我应该如何处理?

这个术语叫做 load shedding:这意味着 google 服务器足够聪明,可以识别它们何时收到它们无法处理的负载(太多请求),因此它们开始丢弃一些他们 "on the floor"(意思是,回应您看到的错误,而不是正确处理它)。

从 client-side(您的代码)处理它的方法是实现重试机制,在重试之间 exponential backoff 休眠。

您可以在 their docs 中查看有关他们 SLA 的更多信息。