代码之家  ›  专栏  ›  技术社区  ›  Richlewis

在Heroku中每30秒运行一个任务

  •  0
  • Richlewis  · 技术社区  · 6 年前

    我希望在Heroku上运行的Nodejs应用程序每30秒运行一次任务。我将Heroku调度程序用于另一个任务,但这是因为它每天运行一次,而且调度程序似乎可以满足这一要求,但以这种间隔运行并不合适。

    node-cron 设置一个作业,每天在上午11点到下午6点之间每隔30秒运行一次(我基本上是调用一个api,然后更新一个数据库),在本地我可以很好地运行它 node cron.js

    const cron = require('node-cron');
    const task = require('./scripts/task');
    
    cron.schedule('*/30 * 11-18 * * *', () => {
      console.log('Running Function');
      task.runFunction();
    });
    

    我不是100%确定如何在Heroku上运行这个,从他们的 docs 它们指定这种设置(在Procfile中配置):

    web:    node web.js
    worker: node worker.js
    clock:  node clock.js
    

    当前程序文件

    web: node server.js
    

    是不是换了我的衣服 cron.js clock.js worker.js

    2 回复  |  直到 6 年前
        1
  •  2
  •   Joaquin Roca    6 年前

    你也许应该换个房间时钟.js至克朗.js,或者,如你所说,重命名克朗.js至时钟.js.

    web:    node web.js
    worker: node worker.js
    clock:  node cron.js
    

    另外,我不确定你的克朗.js设置正确。从node cron上的文档来看,您可能需要如下内容:

    const CronJob = require('../lib/cron.js').CronJob;
    
    console.log('Before job instantiation');`
    const job = new CronJob('*/30 * 11-18 * * *', () => {
      console.log('Running Function');
      task.runFunction();
    });
    console.log('After job instantiation');
    job.start();
    
        2
  •  0
  •   Zagonine    6 年前

    worker: node worker.js cron.js 你不能让他对这个工人做什么。)我不知道是什么 runFunctions() 是的)。如果您的应用程序只是cron作业,那么您甚至不需要添加第一行。

    clock: cron.js
    

    你可以改变 clock cron 如果你愿意的话。这并不意味着: docs .