繁体   English   中英

向GAE添加动态cron作业

[英]Adding dynamic cron jobs to GAE

在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作业?

不行,这是不可能的。

您只需要将此计划数据保存到数据存储中,然后每分钟运行cron并检查是否需要执行某些操作。 基本上,您会做自己的简单调度程序。

您可以使用推送队列来创建和运行任务。

2019年更新


为此创建了Google Cloud Scheduler 它实质上是在后台运行托管cron作业(包括对失败的作业进行自动重试)。

Cloud Scheduler REST API

RPC参考

(我还建议考虑@Peter Knego的建议,以根据DataStore条目创建自己的调度程序,因为如果您需要创建许多调度任务或复杂规则,与使用Google Cloud Scheduler相比,这可能更灵活且成本更低。围绕任务调度)


另一个可能的选择(取决于您的用例)是Google Cloud Tasks 这是Google最近推出的Push Queues的较新替代品,并且有一个API以编程方式创建新任务。 Cloud Tasks实质上集中了Google Cloud中的Push Queue管理(尽管您可以继续对现有应用程序使用带有较旧API的Push Queue)。

我一般不建议将其作为实现OP建议的动态任务类型的一种方式,因为Push Queue实际上是用于消息处理的,尤其是在大容量消息传递中(请参阅我关于“ Scheduled Tasks vs Push Queues”的说明“)。

如果“推送队列” 适合您的用例的选项,则快速入门指南提供了Google Cloud Tasks API使用示例。 以下链接提供了Java,Python,C#和其他语言的示例:

https://cloud.google.com/tasks/docs/quickstart-appengine


计划任务与推送队列

  • Google Cloud Scheduler =计划任务
  • Google Cloud Tasks =推送队列(消息队列)

您可能会问您如何决定使用计划任务(例如Google Cloud Scheduler)和推送队列(例如使用Google Cloud Tasks)。

计划任务通常用于运行时间更长或更密集的处理任务,或者用于预测和控制任务何时运行的重要任务。 例如,大型数据集的聚合或处理。 或批量处理数据。 您可以将cron作业视为计划任务的计划定义/配置。

推送队列本质上是一种持久消息队列的形式,通常更适合处理大量流量的系统,例如繁忙的电子商务网站,在该网站中,来自用户的请求或“消息”需要与处理它们的系统分离(例如Web后端或数据库服务器)。 此体系结构在高容量系统中用于将消息排队以进行处理,并优先处理请求的可靠性,而不是优先针对服务后端进行即时处理。 推送队列与发布/订阅架构和技术(例如Google Cloud发布/订阅)更紧密相关

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM