Google应用引擎Java - 无需重新部署应用即可编辑crons

时间:2014-01-23 19:50:02

标签: java google-app-engine

我知道我需要在cron.xml文件中设置所有的crons。我现在想要动态设置调度表,即在数据库表中,以便我可以通过简单的更新来调整它们。 例如,而不是具有以下内容:

<cron>
  <url>/cron/task1</url>
  <description>Task 1 </description>
  <schedule>every 5 minutes</schedule>
</cron> 

我希望有类似的东西:

<cron>
  <url>/cron/task1</url>
  <description>Task 1 </description>
  <schedule>${TASK1_SCHEDULE}</schedule>
</cron> 

其中TASK1_SCHEDULE将是数据库中的条目。 那可能吗 ?或者还有其他方法可以以编程方式实现吗?

2 个答案:

答案 0 :(得分:2)

您无法动态修改cron.xml文件以接受新作业或修改作业列表。

我同意马丁的意见,因为你写了一个Cron Job,它以你能够容忍你的申请的门槛间隔执行,即1分钟或2分钟。在那里,我建议根据您的需要管理包含各种参数的自定义Job定义实体,包括下次执行的时间。

在您的Cron作业中,一旦下次执行的时间过去,您应该使用TaskQueue来执行该功能,而不是自己运行每个功能并等待它完成。

请查看以下文章,该文章提供了类似的框架:http://pisarenko.net/blog/2013/09/03/creating-dynamic-task-scheduler-on-appengine/

答案 1 :(得分:1)

编写自定义调度程序,因为您无法从代码中更改cron.xml。以您需要的最短间隔呼叫您的调度程序。在调度程序中,查询数据库以查找到期的任务并执行它们。