2017-01-09 5 views
0

Gmail APIを使用して、ユーザーの受信トレイ内のすべてのメールを取得しています。要求がメッセージの返答を返さなくなってから約1時間が経過するまで、すべて正常に動作します。Pythonエラー:接続が中止されました - ネットワークがダウンしました

私はメッセージヘッダを要求するためにこのコードを使用

sess = requests.Session() 
retries = Retry(total=5, connect=10, backoff_factor=0.1, status_forcelist=[401, 500, 502, 503, 504], raise_on_redirect=True, raise_on_status=True) 
sess.mount('https://', HTTPAdapter(max_retries=retries)) 

try: 
      msg = json.loads(sess.get(message_url, params={'format': 'metadata'}, headers=authorization_header).text) 
      logger.info('msg', dict(msg=msg)) 

except requests.HTTPError as e: 
      logger.info('error', dict(
       error=e, 
       error_code=e.code 
      )) 

except: 
      logger.info('Unknown error') 

そして時間後、私はそうのようなエラーが発生します:

[2017-01-08 16:34:17,536: WARNING/PoolWorker-1] 
Retrying (Retry(total=4, connect=10, read=None, redirect=None)) 
after connection broken by 'ProtocolError('Connection aborted.', 
OSError(50, 'Network is down'))': 
/gmail/v1/users/<user_id>/messages/<message_id>?format=metadata 

私はので、問題に実行しているかもしれないと思いましたアクセストークンが期限切れになるので、リフレッシュトークンを使用して新しいアクセストークンを取得するスクリプトを作成しました。このプロセスはHTTPErrorを捕捉することも決してしませんが、代わりに 'Unknown error'を出力します。したがって、HTTPErrorが当てはまるとは思わないでしょう。

この問題へのアプローチ方法についてご意見はありますか? 「ネットワークがダウンしている」

connection broken by 'ProtocolError('Connection aborted.', OSError(50, 'Network is down'))': 

不安定なインターネット接続とは何かを持っていることがあります。

答えて

1

あなたのエラーログは述べています。

別の原因として、間違ったURLを使用している可能性があります。このSO threadでは、接続がhttpとhttpsでなく、その逆の場合があります。

+1

私はPythonのリクエストライブラリのRetryクラスを使用してConnectionErrorを再試行していますので、まだ私はそれを得ています。 私は自分自身の再試行クラスを作成し、最大再試行しきい値を上げると思います。 – Aspen

関連する問題