如何在生产中部署cron脚本?

时间:2016-04-05 02:59:34

标签: google-app-engine go scheduled-tasks google-compute-engine

我想写一个脚本,全天安排各种事情。不幸的是它会做>每天100个不同的任务,接近500个,未来可能达到10,000个。

所有任务都是独立的,因为您可以将我的脚本视为注册并希望我为其安排任务的最终用户的服务。因此,如果5个人注册并且A人希望我在上午9点向他们发送电子邮件,这将不同于B人可能希望我在晚上10:30查询api等。

现在,从概念上讲,我计划建立一个数据库,告诉我每个人的任务是什么,以及他们要求安排该任务的时间和频率。每天一次,我将从我的数据库中获取这些数据,这样我就可以获得当天需要执行的所有任务的最新记录

通过循环运行它我可以创建可以为每个任务执行计时器或代码的通道。

我的问题是如何在生产中部署,例如谷歌应用引擎?因为这些平台是针对Web服务器的,所以我不确定它是如何工作的......或者我是否应该使用Google Compute Engine并将其作为24小时的计算? google计算引擎甚至可以进行http调用吗?

如果我必须说每天24小时开放500个频道,这还算在谷歌应用引擎中的500个容器吗?我认为,尽管本质上是一种非常低成本的产品,但它会很快变得非常昂贵。

所以问题又回来了,cron脚本如何在生产中部署?

任何帮助或指导都会非常受欢迎,因为我已经完成了大量的Google搜索,不幸的是,所有内容都会导致一个cron调度程序在Google应用引擎中限制为100个任务...

2 个答案:

答案 0 :(得分:1)

有关GAE上cron操作的详细信息,请参见here

您未来的棘手部分是updating the cron配置是从外部应用程序完成的,因此根据您的应用程序自定义cron作业至少很困难(如果不是不可能)用户的行为。

然而,可以只运行一个通用的cron作业(例如,每分钟一次)并让该作业的处理程序读取用户的自定义作业配置,并进一步生成相应的任务来处理它们。每天运行~10K任务通常不是问题,它们甚至可能适合免费应用程序配额(取决于任务实际执行的操作)。

可以在常规Linux OS(包括GCE VM)上应用相同的技术。我还没有使用GCE,所以我无法确切知道是否/如何使用动态更新的cron。

答案 1 :(得分:0)

您只需要一个cron作业即可满足您的要求。这个cron作业可以每30分钟运行一次 - 或者每天运行一次。它将看到在下一段时间内必须完成的任务,创建任务以执行此操作,并将这些任务添加到队列中。

一切都可以由单个App Engine实例完成。当然,执行任务所需的实例数取决于每个任务的运行时间。您可以很好地控制运行任务队列。