【问题标题】:Edit the tasks created using node-cron编辑使用 node-cron 创建的任务
【发布时间】:2018-12-27 12:16:06
【问题描述】:

尝试使用 node-cron 'https://github.com/merencia/node-cron' 按计划运行任务。

任务创建和启动:

var cron = require('node-cron'),
task = cron.schedule('* * * * * *', function () {
    console.log('task running...',JSON.stringify(task));
    }, false);
task.start();

停止任务:

task.stop();

销毁任务:

task.destroy();

当任务在创建的范围内执行时,代码可以正常工作。但是根据要求,我以后如何从不同的功能访问“任务”。任务是否可以存储在后端以稍后对其执行“停止()”或“销毁()”功能。 如果使用 node-cron 不可能,还可以使用什么。 使用 node.js 和 mongoDb。

【问题讨论】:

    标签: node.js mongodb scheduled-tasks node-cron


    【解决方案1】:

    我遇到了同样的问题。使用node-schedule 解决了这个问题:

    启动自定义作业:

      const campaignId = "MY_CUSTOM_ID"
      let job = schedule.scheduleJob(campaignId, '* * * * * *', function () {
        console.log('running campaign: ' + campaignId)
      })
    

    停止自定义作业:

      const campaignId = "MY_CUSTOM_ID"
      let current_job = schedule.scheduledJobs[campaignId]
      current_job.cancel()
    

    【讨论】:

      【解决方案2】:

      不,不可能将诸如此类的对象存储在数据存储中。您将需要一些其他系统来管理您的任务。

      一个这样的系统可以是一个全局可用的管理器,您可以在其中通过某个 ID 注册任务,以便知道该 ID 的任何人都可以访问该任务。然后可以将 id 存储在数据库中。

      非常简单的实现:

      TaskManager.js

      const tasks = [];
      
      const add = (task) => {
        tasks.push(task);
        return tasks.length;
      };
      
      const get = (id) => tasks[id];
      
      module.exports = {
        add,
        get,
      };
      

      module1.js

      const TaskManager = require('TaskManager.js');
      
      const task = cron.schedule( /* ... */ );
      const id = TaskManager.add(task);
      DB.store('task_id', id)
      

      module2.js

      const TaskManager = require('TaskManager.js');
      
      const id = DB.get('task_id');
      const task = TaskManager.get(id);
      

      另一种方法可能是TaskManager,它侦听事件或定期检查数据库中的值并根据该值停止任务。

      【讨论】:

      • 抱歉回复晚了。感谢您及时的回复。它就像魅力一样。
      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2013-05-26
      • 2014-05-26
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      相关资源
      最近更新 更多