0

我有应用引擎应用程序。我的数据库中有用户刷新令牌(为了访问谷歌驱动器)。

现在,我想创建这个:

每周(我的意思是每 7 天),我想从谷歌驱动器临时下载用户PDF文档并与他们一起工作。我向每个用户发送有关他们的 pdf 文档的邮件。

主要问题是,可能有很多用户。每个用户也可能有很多文档。我应该为每个用户做这项工作,每周一次。但是每个用户的数据也需要很多时间。

问题: 所以,现在我想,我应该使用哪个时间服务?Cron 或任务队列。为什么?如果是任务队列,是哪一个。哪个更快,更灵活?我也可以稍后向用户发送邮件(当她/他请求时不必立即发送邮件)

问题2:我可以运行任务队列,例如,每周一次吗?

例如,如果我想每天运行它,我可以使用类似的东西:

<rate>1/d</rate>

但我怎么能每周一次呢?

问题3:因为可能有很多用户(并且因为每个用户都需要很多时间),我可以使用这样的东西吗?

CRON 作业将是每周一次(每周一次)。并且 CRON 为每个用户调用 TASK QUEUSE。每个用户数据都会临时下载到应用引擎服务器中(我认为,如果我将其保存在内存中,服务器将非常困难)。然后我将查看 PDF 文档并向每个用户发送邮件。这是好方法吗?还是我应该只使用 CRON?我在这里有限制吗?在服务器存储或队列或类似的地方。

4

1 回答 1

1

两者都用。创建一个cron 作业以每 7 天运行一次。让 cron 作业触发一个任务(在推送队列中)来处理您的 PDF。我会为每个 PDF 使用单独的任务来处理,并配置您的 queue.yaml以便它以正确的速率处理它们(取决于预算/速率限制因素等)。

如果您需要发送邮件,您可以通过邮件 api从任务请求中执行此操作。

附带说明一下,如果您有很多用户,更好的方法可能是让 cron 作业比每 7 天更频繁地运行一次(例如,每天一次,甚至更多)。您可以使用逻辑来确定每次 cron 运行时需要处理哪些用户。这甚至可能会增加负载,并最终为您节省金钱。

于 2013-10-08T09:00:18.763 回答