【问题标题】:Cronjob timeout to multiple jobs多个作业的 Cronjob 超时
【发布时间】:2020-06-07 16:31:31
【问题描述】:

我正在开发 Telegram 机器人。 我使用Telegrafcron 进行通知。 Telegram 每秒只能发送 30 条消息。因此,我正在寻找一种解决方案来安排作业在超出限制时同时运行。

这是我正在使用的 cronjob 的示例脚本:

async function setCronJob(chat_id, time, tz) {
  const cronTime = moment.isMoment(time) ? time.toDate() : `${time.m} ${time.h} * * *`;
  const job = new CronJob({
    cronTime,
    async onTick() {
        const user = await db.User.findOne({chat_id: chat_id})
        await bot.telegram.sendMessage(user.chat_id, 'Hello World')
    },
    start: true,
    timeZone: tz
  });
  job.start()
}

请建议我在这种情况下可以使用哪些解决方案。

【问题讨论】:

    标签: javascript node.js cron telegram-bot


    【解决方案1】:

    我建议您为此功能使用队列,而不是为此编写 cronjob。队列所做的是将您想要实现的功能“排队”。

    特别是,您可以阅读 bull 库:https://www.npmjs.com/package/bull

    它提供排队功能以及在特定时间执行的时间定义作业。

    【讨论】:

    • 感谢您的帮助。我去看看。
    猜你喜欢
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 2019-09-13
    • 1970-01-01
    相关资源
    最近更新 更多