사용자의받은 편지함에서 메시지를 옮길 수있는 앱을 만들고 있습니다. 현재 Gmail API를 사용하고 있지만 IMAP을 사용하는 것보다 API 요청이 현저히 느린 것으로 나타났습니다.Gmail API messages.modify가 IMAP보다 40 배 느린가요?
이 방법은 간단합니다. 전자 메일 그룹의 레이블을 변경하기 위해 일괄 수정 요청을 보내 그들을 이동시킵니다. Gmail API를 사용하여 메일 처리량은 초당 3.3 메시지입니다. 비교를 위해 IMAP 처리량은 초당 130 메시지입니다.
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으로 압축 해요, 그리고 여기에
내가 현재 사용 BatchHttpRequests 해요 방법 필드를 사용하여 반환되는 정보의 양을 제한하려고했습니다. 모두 performance tips 페이지에서 제안됩니다. 요청이 왜 그렇게 오래 걸리는지 이해하는 데 어려움을 겪고 있습니다. 어떤 제안이라도 대단히 감사하겠습니다!
비교를 위해 IMAP 코드를 표시해 주시겠습니까? 또한, 어떤 언어로 쓰고 있습니까? 파이썬처럼 보입니까? – Schwern
안녕하세요 @Schwern, 나는 비교할 IMAP 코드를 추가했습니다. 그리고 네, 저는 파이썬으로 글을 쓰고 있습니다. Gmail API보다 IMAP의 메일 처리량이 훨씬 좋음을 알게되었습니다. – frankjames