Google app engine GAE-在固定时间后执行许多小任务

Google app engine GAE-在固定时间后执行许多小任务,google-app-engine,cron,scheduled-tasks,task-queue,Google App Engine,Cron,Scheduled Tasks,Task Queue,我想制作一个谷歌应用程序引擎应用程序,在用户点击应用程序中的按钮后,在固定时间(例如一天)向用户发送Facebook消息。它不可扩展,无法用于或可能用于数百万个小型工作。我也考虑过使用API实现我自己的队列,但据我所知,只有使用API才能实现,API是为更大的使用量而设计的,并且不是免费的 免费的谷歌应用程序引擎应用程序有没有一种可扩展的方式,可以在一段固定的时间后执行大量的小任务?对于初学者来说,如果你想做数以百万计的小工作,不管你怎么看,你都会很快超过免费配额。免费配额是用来测试的 这取决于

我想制作一个谷歌应用程序引擎应用程序,在用户点击应用程序中的按钮后,在固定时间(例如一天)向用户发送Facebook消息。它不可扩展,无法用于或可能用于数百万个小型工作。我也考虑过使用API实现我自己的队列,但据我所知,只有使用API才能实现,API是为更大的使用量而设计的,并且不是免费的


免费的谷歌应用程序引擎应用程序有没有一种可扩展的方式,可以在一段固定的时间后执行大量的小任务?

对于初学者来说,如果你想做数以百万计的小工作,不管你怎么看,你都会很快超过免费配额。免费配额是用来测试的

这取决于任务的粒度。如果您每天执行一次大量任务,那么连接到mapreduce操作(实际上是在任务队列上发送一组任务)的cron可以正常工作。基本上,您将发出一个数据存储查询来查找需要运行的任务,并将它们发送到mapreduce上

如果您一天(每分钟)执行数千次此任务,它可能会变得昂贵,因为您发出了许多查询。请注意,如果这些查询中的大多数都不返回任何内容,那么成本仍然很低

另一种选择是将任务存储在内存中而不是数据存储中,这是您希望开始使用后端的地方。但后端的维护成本很高。考虑使用谷歌计算引擎,它提供了更便宜的虚拟机

编辑:

如果您选择cron/datastore路径,则每当用户想要发送延迟消息时,您都会存储一个新实体。最重要的是,它有一个可查询的消息发送时间戳,可能四舍五入到最接近的分钟或最接近的5分钟,无论您决定的粒度应该是什么

然后,您将有一个cron作业,它以设置的间隔(比如每分钟)运行。每次运行时,它都会为给定分钟内需要发送的所有cron作业构建一个查询


如果您确实每分钟要发送数十万条消息,那么您不会希望从cron任务中发送消息。您希望cron任务生成一个mapreduce作业,该作业将扇出查询并生成任务以发送您的消息。

回答得好,谢谢!我所看到的模型是任务连续进入并被连续处理(有一天的延迟),因此我假设cron+mapreduce解决方案不起作用?取决于您的粒度。如果你同意每5分钟打一次电话,那么一天只有288个电话,这还不错。每分钟都是1440。我不会每秒执行任何类似cron任务的任务。。。在这一点上,任务将很容易在上一个任务完成之前开始。这不是遇到了与以前相同的问题吗?现在,你不需要计算如何为一天的作业排队,而需要为它们排队5分钟。如果你同意每隔5分钟发送一次消息,那么这就行了。如果您需要精确到第二个,那么您可能希望在计算引擎上使用服务器。我的意思是,GAE只给您响应请求的能力,那么您如何能够在生成下一个cron任务所需的5分钟内存储消息,而不使用像这样愚蠢的东西?