如何处理使用 nodejs 查询和更新 SQL 数据库中的 Table 的 CronJob?
How to handle a CronJob that queries and updates a Table in SQL Database using nodejs?
我需要 运行 一个 CronJob,它以 CronJob 配置中提到的特定时间间隔执行三个相互依赖的异步任务。
异步任务 1:查询 Table 以获取特定条件的结果
异步任务 2:对任务 1 中获取的结果执行异步操作
异步任务 3:使用在任务 2 中执行的操作更新 Table 对应 ID 的条目。
我无法弄清楚,如果下一个 CronJob 的下一个间隔在第一个间隔的任务结束之前开始,会发生什么。 以及如何管理它。
更具体的问题:有没有一种方法可以让我在 sql table 和正在执行的任务之间保持同步,这样如果一个 UPDATE TASK
在一个周期内待处理,它不会在下一个周期执行相同的任务。
我正在使用 node-cron
npm 模块来开发 CronJob。
很遗憾,cron
不支持作业之间的依赖关系,因此您必须自己处理。您基本上有两个选择:
- 将任务合并为一个任务
- 在某个地方有一个标志,让 Task-n 知道 Task-n-1 是否已成功完成
如果您能够合并任务,您的生活将会简单得多,因为您可以使用您在 JavaScript 中习惯使用的工具。如果没有,您可以这样做:
- 异步任务 1 查询数据库并将结果保存到已知位置(例如
2018-08-31-task-1-results.csv
)
- Async Task-2 检查
2018-08-31-task-1-results.csv
是否存在。如果是,它就知道之前的任务是成功的,并且可以处理该文件并将输出保存到另一个文件(例如 2018-08-31-task-2-results.csv
)
- 异步任务 3 的处理方式与异步任务 2 类似。
换句话说,这些任务并不直接相互依赖,而是依赖于先前任务生成的输出。这允许您重新运行 任务并记录它们的输出。我的例子是使用文件,但它可以是所有任务都可以访问的任何东西,比如中间 table.
我需要 运行 一个 CronJob,它以 CronJob 配置中提到的特定时间间隔执行三个相互依赖的异步任务。
异步任务 1:查询 Table 以获取特定条件的结果
异步任务 2:对任务 1 中获取的结果执行异步操作
异步任务 3:使用在任务 2 中执行的操作更新 Table 对应 ID 的条目。
我无法弄清楚,如果下一个 CronJob 的下一个间隔在第一个间隔的任务结束之前开始,会发生什么。 以及如何管理它。
更具体的问题:有没有一种方法可以让我在 sql table 和正在执行的任务之间保持同步,这样如果一个 UPDATE TASK
在一个周期内待处理,它不会在下一个周期执行相同的任务。
我正在使用 node-cron
npm 模块来开发 CronJob。
很遗憾,cron
不支持作业之间的依赖关系,因此您必须自己处理。您基本上有两个选择:
- 将任务合并为一个任务
- 在某个地方有一个标志,让 Task-n 知道 Task-n-1 是否已成功完成
如果您能够合并任务,您的生活将会简单得多,因为您可以使用您在 JavaScript 中习惯使用的工具。如果没有,您可以这样做:
- 异步任务 1 查询数据库并将结果保存到已知位置(例如
2018-08-31-task-1-results.csv
) - Async Task-2 检查
2018-08-31-task-1-results.csv
是否存在。如果是,它就知道之前的任务是成功的,并且可以处理该文件并将输出保存到另一个文件(例如2018-08-31-task-2-results.csv
) - 异步任务 3 的处理方式与异步任务 2 类似。
换句话说,这些任务并不直接相互依赖,而是依赖于先前任务生成的输出。这允许您重新运行 任务并记录它们的输出。我的例子是使用文件,但它可以是所有任务都可以访问的任何东西,比如中间 table.