0

我有应用程序引擎应用程序。我有用户刷新令牌(为了有权访问谷歌驱动器)在我的数据库。应该使用哪个队列(App Engine)

现在,我想创建这样:

每周(我的意思是每7天),我想temorary下载用户 PDF文档谷歌驱动并与他们合作。我发送邮件给每个用户关于他们的pdf文档。

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

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

问题2:例如,我可以每周运行一次Task Queue吗?

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

<rate>1/d</rate> 

,但我怎么能做到这一点,每周一次?

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

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

回答

1

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

如果您需要发送邮件,您可以通过任务请求通过mail api执行此操作。如果你有很多用户,更好的方法可能是让cron作业比每7天更频繁地运行一次(比如说,每天一次,甚至更多)。您可以使用逻辑来确定每次运行cron时需要处理哪些用户。这可能甚至是负载,并最终节省你的钱。

+0

一个用户,可能有10个或50个pdf文档。我应该将每个PDF的任务分开进行,还是分别为每个用户的PDF分配任务? – grep

+0

我应该向每位用户发送有关他们的pdf数据的电子邮件... – grep

+0

这很大程度上取决于您对PDF所做的工作,但我认为更可靠的方法是为每个PDF分别执行一项任务。为此,您需要一个监视任务来检查其他任务的进度。管道API具有内置的此类功能 - > https://code.google.com/p/appengine-pipeline/ –

相关问题