当前位置 : 主页 > 网络安全 > 测试自动化 >

gmail-api – 批量获取消息性能

来源:互联网 收集:自由互联 发布时间:2021-06-22
我需要在INBOX中获取最后100条消息(仅限标题).为此我正在使用IMAP扩展来搜索然后获取消息.这是通过两个请求(SEARCH然后是UID FETCH)完成的. 什么是Gmail API相当于在一个请求中获取多条消息
我需要在INBOX中获取最后100条消息(仅限标题).为此我正在使用IMAP扩展来搜索然后获取消息.这是通过两个请求(SEARCH然后是UID FETCH)完成的.
什么是Gmail API相当于在一个请求中获取多条消息?
我所能找到的只是一个批处理API,这看起来更麻烦(编写一长串消息:用纯HTTP代码包装获取请求). 它在Gmail API中与在IMAP中几乎相同.两个请求:首先是messages.list来获取消息ID.然后是一个(批处理的)message.get来检索你想要的那些.根据您使用的语言,客户端库可能有助于批量请求构建.

A batch request is a single standard HTTP request containing multiple Google Cloud Storage JSON API calls, using the multipart/mixed content type. Within that main HTTP request, each of the parts contains a nested HTTP request.

来自:https://developers.google.com/storage/docs/json_api/v1/how-tos/batch

这真的不是那么难,即使没有python客户端库(仅使用httplib和mimelib),我花了大约一个小时才能在python中找到它.

这是一个部分代码片段,再次使用直接python.希望它清楚地说明并没有太多涉及:

msg_ids = [msg['id'] for msg in body['messages']]
headers['Content-Type'] = 'multipart/mixed; boundary=%s' % self.BOUNDARY

post_body = []
for msg_id in msg_ids:
  post_body.append(
    "--%s\n"
    "Content-Type: application/http\n\n"
    "GET /gmail/v1/users/me/messages/%s?format=raw\n"
    % (self.BOUNDARY, msg_id))
post_body.append("--%s--\n" % self.BOUNDARY)
post = '\n'.join(post_body)
(headers, body) = _conn.request(
    SERVER_URL + '/batch',
    method='POST', body=post, headers=headers)
网友评论