Проблема: процедура cron запускается несколько раз после запуска сервера Meteor. - PullRequest
0 голосов
/ 05 марта 2020

Я сейчас работаю над приложением Meteor. Несколько подпрограмм cron запускаются с использованием пакета узлов-пакетов npm. Моя проблема в том, что после первоначального запуска метеорного сервера (с использованием командной строки 'meteor yarn start: dev') процедура выполняется много раз одновременно, а затем каждую минуту, как и ожидалось. Очевидно, это вызывает некоторые проблемы, связанные с асинхронной c природой этих подпрограмм.

Моя гипотеза: поскольку первоначальная сборка занимает около 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'
  })
});

Я уже сделал некоторые исследования о том, как получить доступ к состоянию метеорного сервера внутри рутинного кода, чтобы выполнить его, только когда сервер полностью функционирует, но ничего не нашли.

Все, что могло бы помочь, приветствуется, даже обходной путь. И имейте в виду, что моя гипотеза может быть совершенно неверной.

1 Ответ

0 голосов
/ 06 марта 2020

Попробуйте обернуть ваш код планировщика в 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'
      });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...