【问题标题】:GAE collection task data supportGAE采集任务数据支持
【发布时间】:2013-10-17 21:14:08
【问题描述】:

我有 GAE 申请。我有给 NoSQL 的电子邮件和他们的谷歌驱动器的刷新令牌。我有 Cron 作业,它会为 每个 PDF 触发 Push queue 以便下载它。

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

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

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

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

【问题讨论】:

    标签: google-app-engine google-cloud-datastore pipeline google-api-java-client google-tasks-api


    【解决方案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 以防止再次发送。 (或者,完全删除实体)。

    【讨论】:

    • 你在开玩笑吧?!这是非常简单的代码,旨在说明而非解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 2011-09-09
    • 2021-11-11
    • 2019-08-20
    • 1970-01-01
    相关资源
    最近更新 更多