【发布时间】:2018-08-23 04:39:05
【问题描述】:
我正在编写一个软件,它会自动处理来自用户的 gmail 收件箱(我们域中的企业收件箱)的邮件。目的是将此软件部署到 Google App Engine,但我无法理解以下场景:
在软件启动时,我希望它能够处理在自动化启动之前积累的消息。正如我预计收件箱中有数百条消息一样,此阶段可能需要一些时间。我正在研究以下选项:
-
同步方式:启动一个单独的长时间运行的线程来同步处理待处理的消息,并使用主线程将有关新传入消息的通知放入一个单独的队列中,稍后再处理。 结果:一旦主线程完成其余代码,负责处理待处理消息的线程就会被杀死。在阅读 the docs 之后,这是一种预期:
请注意,当请求结束时,运行时将加入线程,因此线程无法在请求结束后运行。
-
异步方式:使用批量调用获取消息并通过回调处理结果。结果:每次预期结果时,实例都会重新启动并且上下文丢失。
from apiclient.http import BatchHttpRequest batch = self.service.new_batch_http_request(callback=self.cbk_request_messages) batch.add(self.service.users().messages().get(userId='me', id=id, format='metadata')) batch.execute()
或者我在这里以完全错误的方式使用 GAE?提前致谢。
【问题讨论】:
标签: python google-app-engine gmail-api