【发布时间】:2017-01-22 22:48:52
【问题描述】:
我正在创建一个应用程序来移动用户收件箱中的消息。目前我正在使用 Gmail API 来执行此操作,但我注意到向 API 发出请求明显比使用 IMAP 慢。
方法很简单:我正在发送一批修改请求来更改一组电子邮件的标签,以便移动它们。我使用 Gmail API 的消息吞吐量为 3.3 条消息/秒。相比之下,IMAP 吞吐量为 130 条消息/秒。
这是我目前使用 BatchHttpRequests 的方式:
batch = BatchHttpRequest()
for gmailId in gmailIds:
batch.add(self.service.users().messages().modify(userId=self.user.email, id=gmailId, body=labels))
try:
batch.execute()
except errors.HttpError, error:
log_this_error(self.user.email, error.resp.status)
这是我完成相同任务的 IMAP 代码:
# imap_conn is the user's authed connection
status, count = imap_conn.select(oldMailboxLabel)
if status == "OK":
count = int(count[0])
if count > 0:
messageNumbers = range(1, count + 1)
messageNumbers = ",".join(map(str, messageNumbers))
imap_conn.copy(messageNumbers, newMailboxLabel)
imap_conn.close()
imap_conn.delete(oldMailboxLabel)
else:
imap_conn.close()
else:
count = 0
我已经在对我的请求进行批处理和 gzip 压缩,并且我尝试使用字段来限制返回的信息量。所有这些都在他们的performance tips 页面上提出。我很难理解为什么请求需要这么长时间才能完成。任何建议将不胜感激!
【问题讨论】:
-
您能显示您的 IMAP 代码以进行比较吗?另外,你用什么语言写的?看起来可能是 Python?
-
嗨@Schwern,我添加了 IMAP 代码进行比较。是的,我正在用 Python 编写代码——如果之前不清楚的话,我的错!我发现 IMAP 的邮件吞吐量比 Gmail API 更好,这很奇怪