【问题标题】:Nested cron job stop and start issue嵌套的 cron 作业停止和启动问题
【发布时间】:2017-05-17 05:41:06
【问题描述】:

我想同时开始两项工作,但一段时间后我会停止其中一项并继续第二项。 在我们的例子中,我每 30 秒启动 2 个作业,每个作业本身每 4 秒执行一次,如果我在执行过程中停止第一个作业,它将停止并且第二个作业正在执行它的任务,但问题是先 30 秒后即使我们已停止该作业,作业也开始执行任务。

这是我的代码:

var job1;
var job = new CronJob({
    cronTime: '*/30 * * * * *',
    onTick: function () {

        var interval = 4000;
        var index = 0;
        var index1 = 0;
        var users = ['U1', 'U2', 'U3', 'U4']
        var users1 = ['D1', 'D2', 'D3', 'D4']

        job1 = new CronJob({
            cronTime: '*/4 * * * * *',
            onTick: function () {
                  var user = users[index];
                  console.log("Sent To :" + user);
                  index++;
                  if (users.length == index) {
                      job1.stop();
                  }
            },
            start: false,
            timeZone: 'GMT'
        });
        job1.start();

        var job2 = new CronJob({
            cronTime: '*/4 * * * * *',
            onTick: function () {
                var user = users1[index1];
                console.log("Sent To :" + user);
                index1++;
                if (users1.length == index1) {
                    job2.stop();
                }
            },
            start: false,
            timeZone: 'GMT'
        });
        job2.start();
    },
    start: false,
    timeZone: 'GMT'
});
job.start();

对于停止工作:

job1.stop();

【问题讨论】:

    标签: node.js cron cron-task


    【解决方案1】:

    您的第一个作业开始只是因为您已将 cron 设置为每 30 秒运行一次这两个作业,这是我从您的代码中看到的。这将继续运行你的所有东西,每 30 秒运行一次。

    【讨论】:

    • 是的@Viddesh,那么有什么想法可以根据我的需要获得输出吗?
    • 您能否详细说明您到底想做什么?你的问题有点混乱。请解释一下,以便我向您推荐。
    • 我想每 30 秒运行多个任务 A,但每个任务可以通过用户事件随时独立停止和启动。这些任务 A 也有 4 秒的时间间隔。
    • 如果您将作业设置为通过 cron 运行,那么您将无法阻止它运行,这就是 cron 的用途。(自动运行而无需人工干预)
    • 他们提供stop() 手动停止作业的方法,但我的问题是如何从作业列表中停止特定作业
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多