【问题标题】:NodeJS Running multiple fetch requests inside multiple Node-Schedule jobsNodeJS 在多个 Node-Schedule 作业中运行多个 fetch 请求
【发布时间】:2021-09-07 13:21:50
【问题描述】:

我的目标是能够在多个节点调度作业的每一个中运行不同的函数,这些作业将在一天中的特定时间运行,并根据一天中的时间调用特定的函数。

我有以下代码,作为一个简单的例子,我已经简化了。

var f1 = function () {
    return fetch('url1.php', {
        method: 'post',
        headers: {
            'Content-Type': 'application/json'
        }
    })
}

var f2 = function () {
    return fetch('url2.php', {
        method: 'post',
        headers: {
            'Content-Type': 'application/json'
        }
    })
}
    var tasks = [f1, f2];

const promesas = async(tasks) => {
return await Promise.all(tasks.map(function (e, j) {

rules[j] = new schedule.RecurrenceRule();
rules[j].dayOfWeek = [new schedule.Range(1, 5)];
rules[j].hour = hours[j];
rules[j].minute = mins[j];

return schedule.scheduleJob(rules[j], async function () {
    try {
        await tasks[j]()
        
    } catch (error) {
        console.log(error);
    }
});
})).then(response => {
    return Promise.resolve(response);
    });
}

promesas(tasks);

我可以在工作之外很好地运行这些功能,或者在单个工作中运行。但不是在我一开始描述的我想要的设置中。

第一次迭代工作正常,第二次失败了。出于测试目的,每个作业之间的差异为一分钟。

【问题讨论】:

    标签: node.js node-fetch node-schedule


    【解决方案1】:

    我不确定你在这里做什么,尤其是你对 Promise 的奇怪使用。 (为什么awaitPromise.all()?为什么返回已经解决的responsePromise.resolve()?为什么await每个单独的任务,而不是让它异步执行(或失败),相当于一个cronjob脚本,没有输出?)

    但是,如果这对您的第一次迭代有效,那很好。
    我可以假设您使用的是node-schedule吗?如果是这样,请注意您实际上使用的是一天中的 00:00、01:01 等时间,而不是您声称的“每个时间间隔一分钟用于测试目的”。

    这就是我会如何做你似乎想要做的事情:

    
    const tasks = [f1, f2];
    
    let i = 0;
    for (let task of tasks) {
        let rule = new schedule.RecurrenceRule();
        rule.dayOfWeek = [new schedule.Range(1, 5)];
        rule.minute = (new Date().getMinutes() + (++i)) % 60; // adjust to suit your needs
        schedule.scheduleJob(rule, task);
    }
    

    我已确认此方法有效,例如从脚本启动后的一分钟开始,每分钟发出一个任务。对于您给出的简单示例,awaitthenPromise.all 不是必需的,但根据您计划如何处理每个工作职能的结果,可能需要。

    【讨论】:

      猜你喜欢
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多