0

我有 GAE 应用程序。我有给 NoSQL 的电子邮件和他们的谷歌驱动器的刷新令牌。我有Cron 作业,它会为每个 PDF触发推送队列以便下载它。

不,我想向每个用户发送有关其 PDF 数据的电子邮件。

我不能为每个文档发送电子邮件(例如,如果用户 test@gmail.com 有10 个 pdf文档),我可以向该邮件发送10 个电子邮件-每个 pdf 任务发送每个邮件。
但是如何收集用户数据并一起发送?

每个任务都适用于每个 PDF。我应该一起收集每个用户数据。我应该发送一封关于所有文档的电子邮件(在我的示例中,一封电子邮件想要包含 10 个 pdf 文档数据)。

我有一个想法 - 将数据保存在 Datastore 中,第二天另一个 Cron 作业将从数据库收集数据并发送邮件。这种方式好吗?

4

1 回答 1

1

是的,收集数据存储中的数据,每天发送一次。一个典型的模型可能是(在 python 中):

class DigestEmail(db.Model):
  recipient = db.StringProperty()
  pdf_id = db.StringProperty()
  sent = db.BooleanProperty(default=False)

然后,当您需要从任务队列发送电子邮件时,创建一个 DigestEmail 实体。然后,每天(或其他)一次,查询您的 DigestEmail 实体,其中 sent = False,按收件人排序,如下所示:

query = DigestEmail.gql('WHERE sent = False ORDER BY recipient')

然后遍历您的查询结果并按收件人分组。发送电子邮件,并将 sent 属性设置为 True 以防止再次发送。(或者,完全删除实体)。

于 2013-10-10T09:48:05.130 回答