我正在使用该包"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
并打印: …
我想安排每 12 小时发送一次电子邮件,为此我使用了node-cron。
我使用了以下代码,但它没有给我实际结果,所以请帮助我解决这个问题,
var job = new CronJob('0 0 */12 * * *', function(){
//email send code ..
});
Run Code Online (Sandbox Code Playgroud) 我想在某些条件下停止节点 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上编写一个每分钟运行一次的 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) 在 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) 我正在构建一个 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) 我试图在我的服务器上运行 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)