我需要运行一个CronJob,它执行三个相互依赖的异步任务,在CronJob配置中提到一定的时间间隔。
异步任务-1:查询表以获取特定条件的结果
异步任务-2:对Task-1中获取的结果执行异步操作
异步任务-3:使用在任务-2中执行的操作更新相应ID的表条目。
我无法弄清楚,如果下一个CronJob的下一个间隔在第一个间隔结束的任务之前开始会发生什么。如何管理呢?
更具体的问题:有没有办法可以在sql表和正在执行的任务之间保持同步,这样如果UPDATE TASK
在一个周期中处于挂起状态,它就不会在下一个周期执行相同的任务。
我正在使用node-cron
npm模块来开发CronJob。
不幸的是,cron
不支持作业之间的依赖关系,因此您必须自己处理。你基本上有两个选择:
如果你能够合并任务,你的生活会更简单,因为你可以使用你在JavaScript中习惯的工具。如果没有,你可以这样做:
2018-08-31-task-1-results.csv
)2018-08-31-task-1-results.csv
是否存在。如果是,它知道前一个任务是成功的,并且可以处理文件并将输出保存到另一个文件(例如2018-08-31-task-2-results.csv
)换句话说,任务不是直接相互依赖,而是依赖于先前任务生成的输出。这允许您重新运行任务并记录其输出。我的例子是使用文件,但它可以是所有任务都可以访问的任何内容,例如中间表。