【发布时间】:2017-05-24 06:16:37
【问题描述】:
我正在使用 Gmail API 来提取用户收件箱中的所有电子邮件。一切正常,直到大约一个小时,当请求停止返回带有消息的响应时。
我使用此代码请求消息头:
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 http gmail python-requests gmail-api