2017-02-01 3 views
1

最近私はGoogle TrendsでPythonのpytrendsを使って作業しています。ランダムリクエスト中に次のエラーが発生しました:Googleトレンドエラー:申し訳ありませんが、私たちのシステムは今のところ少しストレスがあり、深呼吸をする必要があります

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回の要求で1回発生し、残りは誤っています。

注:過去2日間に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 

この問題の原因とどのように私はそれを処理すべきか?

+0

あなたがリンクしている問題は、次のリリースで修正されると主張しています(コメントは7日前、idkは使用しているバージョン) – wpercy

+0

バージョン3.2.0 –

答えて

2

という用語は、load sheddingと呼ばれています。つまり、Googleのサーバーは、処理できない負荷(リクエストが多すぎる)を認識できるほどスマートであるため、「フロアに」正しく処理するのではなく、表示されているエラーに応答してください)。

クライアント側(あなたのコード)から対処する方法は、再試行の間にexponential backoffのスリープを持つ再試行メカニズムを実装することです。

SLAについては、their docsで詳しく見ることができます。

+1

これを試して通知します。ありがとう。 –

+1

申し訳ありませんが、応答が遅れていますが、このソリューションで問題なく動作しているようです。もう一度ありがとう。 –

関連する問題