0
我正在使用Gmail API来拉取用户收件箱中的所有电子邮件。一切工作正常,直到大约一个小时,当请求停止返回消息响应。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,而是打印“未知错误”,所以我不认为HTTPError会是这种情况。
您对如何解决此问题有任何想法吗?
我使用Python中的请求库中的Retry类来重试ConnectionError,所以我很惊讶我仍然得到这个。 我想我会写我自己的重试类,然后增加最大重试阈值。 – Aspen