我知道我需要在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将是数据库中的条目。 那可能吗 ?或者还有其他方法可以以编程方式实现吗?
答案 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。以您需要的最短间隔呼叫您的调度程序。在调度程序中,查询数据库以查找到期的任务并执行它们。