标签: node-cron

Node-cron:等待作业完成以执行下一个作业

我正在使用该包"cron": "^1.7.1"

我想要完成一项比计划的 cron 作业花费更长的时间的任务。

下面是我的最小可行示例:

const CronJob = require('cron').CronJob;

console.log('Before job instantiation');
const job3 = new CronJob(
  '*/2 * * * * *', async () => {
    if (job3.taskRunning) {
      return
    }

    try {
      //run longer task here
      await setTimeout(() => {
        const d = new Date();
        console.log('JOB 3 - ', d);
        job3.taskRunning = true
      }, 6000);
    } catch (err) {
      console.log(err);
    }
    job3.taskRunning = false
  }
)
console.log('After job instantiation');
job3.start();
Run Code Online (Sandbox Code Playgroud)

如您所见,我的作业运行every 2 seconds并打印: …

javascript cron node-cron

3
推荐指数
1
解决办法
4649
查看次数

我们如何每 12 小时运行一次 node-cron 作业?

我想安排每 12 小时发送一次电子邮件,为此我使用了node-cron

我使用了以下代码,但它没有给我实际结果,所以请帮助我解决这个问题,

var job = new CronJob('0 0 */12 * * *', function(){
   //email send code ..
});
Run Code Online (Sandbox Code Playgroud)

cron node.js node-cron

2
推荐指数
1
解决办法
9253
查看次数

如何停止节点 cron 作业

我想在某些条件下停止节点 cron 作业。

这就是我开始每 1 秒运行一次任务的方式。

const runScheduler = (url)=>{
    cron.schedule('*/1 * * * * *', () => {
        console.log('running a task every one second');
        async.waterfall([ getUrlDelay(url), dbMethods.updateUrlResponses(url) ],function(err, success){
            if(err) return console.log('Url Not Found');
        })
      });
}
Run Code Online (Sandbox Code Playgroud)

我想停止这项工作,但无法做到。

node.js node-cron

2
推荐指数
2
解决办法
1万
查看次数

如何在单独的文件nodejs中编写cronjobs

我想在node.js上编写一个每分钟运行一次的 cron 作业。我在网上查看的教程都显示 cron 作业被编写在“App.js”或“server.js”文件中,该文件是 Nodejs 上的主文件。

我想将其分成另一个文件以获得更好的可读性,但我在网上找不到任何解决方案或示例。请帮忙。

我想将其写在一个单独的文件中,就像我们编写路线一样。

const cron = require("node-cron");

cron.schedule("* * * * *", function() {
    console.log("running a task every minute");
});
Run Code Online (Sandbox Code Playgroud)

node.js node-cron

2
推荐指数
1
解决办法
3799
查看次数

如何为打字稿类方法制作 Cron 作业

在 Typescript 中,我有一个控制器类,它有一个我想每天早上 5 点运行的方法。

我的第一个想法是使用 node-cron 或 node-scheduler 来安排一些事情,但这些似乎严格适用于节点项目,而不是打字稿。

我需要做的是 a) 将我的整个打字稿项目转换为节点,然后 b) 按计划运行该方法。

不过,似乎没有任何关于如何做到这一点的解释。我看到的解释都是关于按某个计划运行 node.js 函数,例如这个: 我需要一个 Nodejs 调度程序,它允许以不同的时间间隔执行任务

下面的代码说明了我正在尝试做的最好的近似。

控制器.ts

import SomeOtherClass from './factory';

class MyController {
    public async methodToRun(){
        console.log ("King Chronos")
    }
}
Run Code Online (Sandbox Code Playgroud)

cron-job.ts

import MyController from "../src/controller";

let controller = new MyController();
var cronJob = require('cron').CronJob;
var myJob = new cronJob('00 30 11 * * 1-5', function(){
      controller.methodToRun();
      console.log("cron ran")
});
myJob.start();
Run Code Online (Sandbox Code Playgroud)

cron node.js typescript node-cron node-schedule

2
推荐指数
1
解决办法
3991
查看次数

NestJs 在 @Cron 装饰器上使用环境配置

我正在构建一个 NestJs 应用程序,具有调度和配置功能。我希望能够使用环境变量配置我的 Cron,但它似乎不起作用。

应用程序模块.ts:

@Module({
  imports: [
    ConfigModule.forRoot(),
    ScheduleModule.forRoot(),
    SchedulingModule,
    ...
  ],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

Schedule.service.ts(来自我的SchedulingModule):

@Cron(process.env.CRON_VALUE)
scheduledJob() {
  this.logger.log('Scheduled : Job');
  ...
}
Run Code Online (Sandbox Code Playgroud)

.env:

...
CRON_VALUE=0 4 * * *
...
Run Code Online (Sandbox Code Playgroud)

显然,目前检查该值时它是空的。我收到以下错误:

(node:55016) UnhandledPromiseRejectionWarning: TypeError: Cannot read property '_isAMomentObject' of undefined
    at new CronTime (/Users/antoinegrenard/Documents/Projet/b4finance/service-scheduling/node_modules/cron/lib/cron.js:42:50)
    at new CronJob (/Users/antoinegrenard/Documents/Projet/b4finance/service-scheduling/node_modules/cron/lib/cron.js:527:19)
    at /Users/antoinegrenard/Documents/Projet/b4finance/service-scheduling/node_modules/@nestjs/schedule/dist/scheduler.orchestrator.js:56:29 
    ...
Run Code Online (Sandbox Code Playgroud)

javascript node.js node-cron nestjs

2
推荐指数
1
解决办法
5460
查看次数

运行 npm install 时收到“npm ERR!code ELIFECYCLE npm ERR!errno 126”

我试图在我的服务器上运行 npm install 并收到此错误。

> node-cron@2.0.3 postinstall /home/workspace/AgreementCancellationProd/retrymechanism/node_modules/node-cron
> opencollective-postinstall

/usr/bin/env: node: Permission denied
npm WARN retrymechanism@1.0.0 No description
npm WARN retrymechanism@1.0.0 No repository field.

npm ERR! code ELIFECYCLE
npm ERR! errno 126
npm ERR! node-cron@2.0.3 postinstall: `opencollective-postinstall`
npm ERR! Exit status 126
npm ERR!
npm ERR! Failed at the node-cron@2.0.3 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be …
Run Code Online (Sandbox Code Playgroud)

javascript node.js npm-install node-cron amazon-linux-2

1
推荐指数
1
解决办法
2万
查看次数