0

我目前正在开发 Meteor 应用程序。使用 npm 包 node-schedule 启动了几个 cron 例程。我的问题是在首次启动流星服务器后(使用命令行'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'
  })
});

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

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

4

1 回答 1

0

尝试将您的调度程序代码包装在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'
      });
    });
});
于 2020-03-06T16:55:03.737 回答