【发布时间】:2020-04-24 20:37:39
【问题描述】:
有两个机器人托管在 Ubuntu 服务器 18.04 x64(1 个核心)上并由 PM2(fork)支持。 https://dl4.joxi.net/drive/2020/01/07/0028/2950/1842054/54/ed0a34751d.jpg 其中一个计划使用Cron 运行任务,在示例中将是 - Quotes (MainBotDP)。
每天上午 9 点执行一个脚本,该脚本应发送一次报价(每天执行一次)。 相反,该脚本会运行多次(并非总是)并发送多个引号。
我注意到一种模式,当我在一天中多次重新启动机器人时似乎会发生这种情况,第二天脚本会根据重新启动的次数运行(我不确定,我猜)。我不太明白如何解决这种情况,我将感谢您的帮助!
PM2 配置文件
module.exports = {
apps: [
{
name: "MainBotDP",
cwd: "./digitalPilgrims/src/",
script: "index.js",
instance_var: "INSTANCE_ID",
autorestart: true,
watch: false,
max_memory_restart: "1G",
env: {
WITH_SCHEDULE: "1"
}
},
{
name: "RSSNews",
cwd: "./discordNews/",
script: "server.js",
instance_var: "INSTANCE_ID",
autorestart: true,
watch: false,
max_memory_restart: "1G",
env: {
WITH_SCHEDULE: "2"
}
}
]
};
Cron 计划文件
const CronJob = require("cron").CronJob;
const { quoteOfDay } = require("./quote");
const { holidayNewYear } = require("./holidays");
const { monthlyGameStats } = require("./monthlyStats");
function startCrons(guild) {
if (process.env.WITH_SCHEDULE === "1") {
const cronQuote = new CronJob(
"0 0 9 * * *",
function() {
quoteOfDay(guild);
},
false,
false,
"Europe/Moscow"
);
const cronHolidayNewYear = new CronJob({
cronTime: "0 18 15 1 0 *",
onTick: function() {
holidayNewYear(guild);
},
start: false,
timeZone: "Europe/Moscow"
});
const cronMonthlyGameStats = new CronJob(
"0 10 1 * *",
function() {
monthlyGameStats(guild);
},
false,
false,
"Europe/Moscow"
);
cronQuote.start();
cronHolidayNewYear.start();
cronMonthlyGameStats.start();
}
}
module.exports = {
startCrons
};
【问题讨论】:
标签: javascript node.js cron discord.js pm2