2

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

4

3 回答 3

2

不,这是不可能的。

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

于 2012-08-24T21:38:37.343 回答
2

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

于 2012-08-24T22:17:38.353 回答
1

2019 年更新


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

云调度程序 REST API

RPC 参考

(我还建议考虑 @Peter Knego 的建议,基于 DataStore 条目创建自己的调度程序,因为如果您需要创建大量计划任务或复杂规则,这可能比使用 Google Cloud Scheduler 更灵活且成本更低围绕任务调度)


另一个可能的选项(取决于您的用例)是Google Cloud Tasks。这是 Google 最近推出的 Push Queues 的更新替代品,并且有一个用于以编程方式创建新任务的 API。Cloud Tasks 本质上集中了 Google Cloud 中的推送队列管理(尽管您可以继续将推送队列与旧 API 一起用于现有应用程序)。

我通常不建议将其作为实现 OP 建议的动态任务类型的一种方式,因为推送队列实际上是用于消息处理的,尤其是对于大容量消息传递(请参阅我关于“计划任务与推送队列”的注释')。

如果推送队列适合您的用例,快速入门指南会提供 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 Pub/Sub

于 2019-05-21T01:58:29.923 回答