问题:cron 例程在 Meteor 服务器启动后多次启动

Issue: cron routine launching several times after Meteor server start

我目前正在开发 Meteor 应用程序。使用 npm 包 node-schedule 启动了几个 cron 例程。我的问题是,在首次启动 meteor 服务器(使用命令行 'meteor yarn start:dev')之后,该例程一次执行多次,然后按预期每分钟执行一次。显然,这会导致一些与这些例程的异步性质相关的问题。

我的假设:由于初始构建大约需要 3 分钟,并且例程每分钟安排一次,我认为调度程序可能会在构建过程开始时以某种方式初始化,从而导致服务器启动时多次启动真的准备好了。

清除情况的一些示例代码:

const schedule = require('node-schedule');
const fetch = require('node-fetch');

schedule.scheduleJob('*/1 * * * *', // cron pattern for every minute
function () {
  fetch("whatever/my/routine/route", {
    headers: { 'Content-type': 'application/json' },
    method: 'GET'
  })
});

我已经研究过如何在例程代码中访问流星服务器状态,以便仅在服务器完全运行时执行,但一无所获。

欢迎任何可以提供帮助的方法,甚至是解决方法。请记住,我的假设可能是完全错误的。

尝试将您的调度程序代码包装在 Meteor.startup 回调中

Meteor.startup(() => {
  schedule.scheduleJob('*/1 * * * *', // cron pattern for every minute
    function () {
      fetch("whatever/my/routine/route", {
        headers: { 'Content-type': 'application/json' },
        method: 'GET'
      });
    });
});