在gae中,我们可以通过编辑cron.xml文件手动添加cron作业
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/cron/addCount/1</url>
<description>Add count + 1 every 1 minutes</description>
<schedule>every 1 minutes</schedule>
</cron>
</cronentries>
有没有什么方法可以让我创建一个用户界面并动态地创建/更新/删除尽可能多的cron作业?这意味着在我部署到gae之后,我应该能够更新cron.xml了?或者是否有一个解决办法,让我可以创造cron工作的飞行?
3条答案
按热度按时间ltskdhd11#
不,这是不可能的。
您只需将此计划数据保存到数据存储中,然后每分钟运行cron并检查是否需要执行某些操作。基本上你会做你自己的简单调度。
knpiaxh12#
您可以使用推送队列来创建和运行任务。
zzlelutf3#
2019年更新
googlecloudscheduler就是为此而创建的。它实际上是在后台运行托管cron作业(包括对失败作业的自动重试)。
云计划程序rest api
rpc引用
(我还建议考虑@peter knego的建议,根据数据存储条目创建自己的调度器,因为如果需要创建大量计划任务或围绕任务调度的复杂规则,这可能比使用google cloud scheduler更灵活,成本更低)
另一个可能的选择(取决于您的用例)是googlecloud任务。这是google最近推出的push队列的新替代品,并且有一个api用于以编程方式创建新任务。云任务本质上集中了googlecloud中的推队列管理(尽管对于现有应用程序,您可以继续使用带有旧api的推队列)。
一般来说,我不建议将此作为实现op所建议的动态任务类型的一种方法,因为推送队列实际上是用于消息处理的,特别是对于大容量消息传递(请参阅我关于“计划任务与推送队列”的说明)。
如果推送队列是适合您的用例的选项,那么《快速入门指南》将给出google云任务api使用的示例。java、python、c#和其他语言的示例可从以下链接获得:
https://cloud.google.com/tasks/docs/quickstart-appengine
计划任务与推送队列
google cloud scheduler=计划任务
google cloud tasks=推送队列(消息队列)
您可能会问您如何决定使用计划任务(如google cloud scheduler)和推送队列(如使用google cloud任务)。
计划任务通常用于运行时间较长或处理强度较高的任务,或者用于预测和控制任务何时运行很重要的任何任务。例如,大型数据集的聚合或处理。或批量处理数据。您可以将cron作业视为计划任务的计划定义/配置。
推送队列本质上是持久消息队列的一种形式,通常更适合处理大流量的系统,例如繁忙的电子商务网站,其中来自用户的请求或“消息”需要与处理它们的系统(例如web后端或数据库服务器)分离。这种体系结构在大容量系统中用于对消息进行队列处理,并优先考虑处理请求的可靠性,而不是针对服务后端的即时处理。推送队列与发布/订阅架构和技术的关系更为密切,比如google云发布/订阅