Я создаю приложение для перемещения сообщений во входящих почтовых ящиках. В настоящее время я использую API Gmail для этого, но я заметил, что выполнение запросов к API заметно медленнее, чем использование IMAP.Сообщения API Gmail.modify 40x медленнее, чем IMAP?
Метод прост: я отправляю пакет запросов на изменение для изменения меток в группе писем, чтобы их перемещать. Пропускная способность моего сообщения с использованием API Gmail составляет 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
Я уже пакетирование и сжатие моих запросов, и Я попытался использовать поля, чтобы ограничить объем возвращаемой информации. Все это предлагается на их странице performance tips. Я изо всех сил пытаюсь понять, почему запросы так долго заканчиваются. Любые предложения будут ценны!
Не могли бы вы показать свой код IMAP для сравнения? Кроме того, на каком языке вы пишете? Похоже, это может быть Python? – Schwern
Привет @Schwern, я добавил код IMAP для сравнения. И да, я пишу на Python - мой плохой, если это было непонятно раньше! Мне очень странно, что IMAP имеет лучшую пропускную способность сообщений, чем API Gmail – frankjames