私は、メッセージをユーザーの受信トレイに移動するためのアプリケーションを作成しています。現在、Gmail APIを使用していますが、IMAPを使用するよりもAPIへのリクエストが著しく遅くなっています。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
私はすでに私の要求をバッチ処理し、gzippingだが、とフィールドを使って返される情報の量を制限しようとしました。これらはすべてperformance tipsページに記載されています。私はなぜ要求が完了するまでに時間がかかりすぎるのか理解するのに苦労しています。どんな提案も大歓迎です!
比較のためにIMAPコードを表示できますか?また、あなたはどの言語を書いていますか? Pythonのように見えますか? – Schwern
こんにちは@Schwern、私は比較するIMAPコードを追加しました。そして、はい、私はPythonで書いています。 Gmail APIよりもIMAPの方がメッセージスループットが優れている – frankjames