【问题标题】:node-schedule not working with express app节点计划不适用于快速应用程序
【发布时间】:2021-11-10 10:33:40
【问题描述】:

我正在尝试将调度程序添加到我的快速打字稿应用程序中,我的代码如下:

app.ts(定义了端口和主机)

import express from "express";
import { createServer } from "http";
import { testTask } from "./task/updatePairsTask";

import router from "./api/router";

const app = express();

app.use(express.json());
app.use("/", router);

const httpServer = createServer(app).listen(PORT, HOST, () => {
  console.log(`Started server at ${HOST}:${PORT}`);
});

我在这里定义了我的工作:在 updatePairsTask.ts 中

import schedule from "node-schedule";

export const testTask = schedule.scheduleJob("/1 * * * * *", () => {
  console.log("Words");
});

我认为这应该使调度程序每隔一秒打印一次到控制台,但是一旦应用程序启动超出“已启动服务器”消息,似乎什么也没有打印。

你能帮忙吗?

谢谢。

【问题讨论】:

  • 你可以试试*/1 * * * * *
  • @HarshitRastogi,抱歉似乎不起作用。

标签: node.js typescript express node-schedule


【解决方案1】:

您可以使用this 包以非常简单的方式操作 Cron 任务。

您可以使用this网站获取cron调度表达式。

import express from "express";
import { createServer } from "http";
import { testTask } from "./task/updatePairsTask";
// import CronJob from "cron"; // npm i cron
const CronJob = require("cron").CronJob

import router from "./api/router";

const app = express();

app.use(express.json());
app.use("/", router);

const job = new CronJob({
    cronTime: '* * * * * *',
    onTick: function () {
        testTask()
    },
    start: false,
    timeZone: 'Asia/Kolkata'
})

job.start()

const httpServer = createServer(app).listen(PORT, HOST, () => {
  console.log(`Started server at ${HOST}:${PORT}`);
  // you can also put job.start() here.
});

【讨论】:

    猜你喜欢
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多