Вопрос

Мне интересно, есть ли способ реализовать фоновые действия, возможно, с помощью пула рабочих.Можете ли вы показать мне направление, я подумываю о написании пакета для этого?

Это было полезно?

Решение

Обновление 2019 года

Прежде чем думать о написании пакета для чего-либо, сначала посмотрите, существуют ли существующие пакеты, которые делают то, что вам нужно.В мире Meteor это означает поиск пакетов «задание/очередь/задача/управление работниками/планирование» в Atmосфере, а затем в npm по тем же критериям поиска.Вам также необходимо более точно определить свои требования:

  • вам нужно постоянство или подойдет решение в памяти?
  • вы хотите иметь возможность распределять задания на разные машины?

Специально для метеора

  • сбор заданий — надежный (использовал в 2014 году в продакшене при стартапе), но сейчас в режиме обслуживания.Позволяет планировать постоянные задания для запуска где угодно (серверы, клиенты).
  • Стив Джобс - активно поддерживается Максом Савиным, автором нескольких мощные инструменты Метеора
  • Littledata: синхронизированный-cron - «Простая система cron для Meteor.Он поддерживает синхронизацию заданий между несколькими процессами».

Заброшенные пакеты:

НПМ-пакеты

Meteor уже несколько лет может использовать пакеты npm напрямую, поэтому этот вопрос сводится к поиску пакеты управления заданиями/работниками/очередями на НПМ.Если вас не волнует настойчивость:

  • Асинхронный "обеспечивает около 70 функций, включая обычные "функциональные" подозреваемые (map, reduce, filter, each...), а также некоторые общие шаблоны для асинхронного потока управления (parallel, series, waterfall...)"
  • d3-очередь - минималистичный, написанный автором D3 Майком Бостоком.

Если вам нужна постоянство, поскольку Meteor уже использует MongoDB, может быть выгодно использовать пакет планирования заданий с сохранением в MongoDb.Самым мощным и популярным кажется Повестка дня, но, к сожалению, он не обслуживался уже несколько месяцев, и у него имеется значительное количество невыполненных работ. проблемы.

Если вы готовы добавить зависимость, поддерживаемую Redis для вашего проекта есть больше вариантов:

Как и MongoDB, Redis также может обеспечивать высокую доступность (через Redis Sentinel), и если вы хотите распределить задания между несколькими рабочими машинами, вы можете направьте их всех на один и тот же сервер Redis.

Другие советы

Существует пакет на основе заданий CRON, которые можно использовать для расписания задач на определенные интервалы или даты.Вот пакет: https://atmosphere.meteor.com/package/cron >

И если вы посмотрите в источник этого пакета, вы заметите, что они просто используют:

Meteor.setInterval( ... , delay );

Так что, если вы сохраняете свои задачи в базе данных, то загрузите их в интервалы во время запуска, вы, вероятно, будете на правильном пути.

Если вы ищете что-то, что специфично для Meteor, я рад поделиться, есть новый пакет, называемый Стив Джобс.Это делает рабочие места бегущего фона так же просто, как вызов метода.

У него есть все стандартные функции, которые вы ожидаете, например, выполняя работу только один раз, повторную попытку неисправных заданий и т. Д.Вы можете узнать больше об этом на GitHub:

http://github.com/msavin/stevejobs

Я предполагаю, что правильная поддержка находятся на их дорожной карте, но в то же время мне удалось получить его взломанным путем через setInterval.Смотрите Cron-Tick Пакет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top