我应该使用哪个队列(App Engine)

时间:2013-10-08 08:21:30

标签: google-app-engine cron google-api-java-client google-tasks-api google-tasks

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

现在,我想创建一个:

每周(我的意思是每7天一次),我想从谷歌驱动器上下载用户 PDF 文档并使用它们。我向每个用户发送有关其pdf文档的邮件。

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

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

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

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

<rate>1/d</rate>

但我怎么能每周做一次呢?

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

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

1 个答案:

答案 0 :(得分:1)

同时使用。创建cron job每7天运行一次。让cron作业触发任务(在push queue中)来处理您的PDF。我将使用单独的任务来处理每个PDF,并configure your queue.yaml以便以正确的速率处理它们(取决于预算/速率限制因素等)。

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

作为旁注,如果您有许多用户,更好的方法可能是让cron作业比每7天(例如,每天一次,甚至更多)更频繁地运行。您可以使用逻辑来确定每次运行cron时需要处理哪些用户。这甚至可能是负担,最终为您省钱。