Google app engine Google Appengine:如何安排一项任务在一天中的某个时间运行一次

Google app engine Google Appengine:如何安排一项任务在一天中的某个时间运行一次,google-app-engine,cron,Google App Engine,Cron,我所面临的情况是,我希望用户执行某个操作,并且可以选择在接下来的24小时之前恢复该操作,否则将执行该操作。我能想到的唯一解决方案是使用Cron作业,并将其安排在一天中的特定时间,在作业中,我将检查其计划时间已过的所有操作,然后执行它们。但这种行为并不经常发生,因此运行Cron作业对我来说似乎不是一个好的解决方案,因为我甚至不确定其成本影响 我想做的是,每当用户单击该操作时,都应该安排一个作业,一旦该操作被执行,就应该取消该计划。有可能用Cron作业来实现这一点吗?如果没有,GAE提供了什么替代方

我所面临的情况是,我希望用户执行某个操作,并且可以选择在接下来的24小时之前恢复该操作,否则将执行该操作。我能想到的唯一解决方案是使用Cron作业,并将其安排在一天中的特定时间,在作业中,我将检查其计划时间已过的所有操作,然后执行它们。但这种行为并不经常发生,因此运行Cron作业对我来说似乎不是一个好的解决方案,因为我甚至不确定其成本影响

我想做的是,每当用户单击该操作时,都应该安排一个作业,一旦该操作被执行,就应该取消该计划。有可能用Cron作业来实现这一点吗?如果没有,GAE提供了什么替代方案?

您有两个选择:

(1) 例如,每小时运行一次cron作业。执行自创建后超过24小时的所有操作

(2) 存储操作时,使用创建任务。为该任务指定一个名称(例如操作的ID),以防您需要取消它。将此任务添加到延迟24小时的队列中。Java示例:

 Queue queue = QueueFactory.getDefaultQueue();

  // Wait 24 hours to run
  queue.add(TaskOptions.Builder.withPayload(new MyTask())
      .name(taskName).etaMillis(System.currentTimeMillis() + (24 * 60 * 60 * 1000));

当一个请求由cron作业调度时,从配额/计费的角度来看,它将作为一个普通请求处理。我想你的应用程序每天都会收到更多的请求,所以加上一个请求应该不是问题,除非你的应用程序相当重

我更喜欢cron而不是延迟任务,因为后者更复杂。cron作业很可能会查询数据存储,然后做什么或不做什么。跟踪或管理数据存储的状态比跟踪延迟的任务更容易