我正在创建一个应用程序来移动用户收件箱中的邮件。目前我使用的是Gmail API,但我注意到向API发送请求比使用IMAP要慢得多。Gmail API messages.modify比IMAP慢40倍?
该方法非常简单:我发送一批修改请求来更改一组电子邮件上的标签,以便移动它们。我使用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
Hi @Schwern,我已经添加了IMAP代码进行比较。是的,我正在用Python编写 - 如果以前不清楚,我的错误!我发现IMAP比Gmail API有更好的消息吞吐量,这很奇怪 – frankjames