Фоновые задачи в Метеоре
Мне интересно, есть ли способ реализовать фоновые тэки, возможно с рабочим пулом. Можете ли вы показать мне направление, я думаю написать пакет для этого?
4 ответа
Обновление 2017
Теперь, когда Meteor может напрямую использовать пакеты npm, этот вопрос сводится к поиску пакетов управления фоновыми задачами по npm (например, Kue - очередь приоритетных заданий для Node.js, поддерживаемых redis) или к поиску пакетов управления задачами, специфичных для Meteor, из которых Наиболее надежным был vsivsi: jobCollection, который позволяет планировать постоянные задания, которые будут выполняться где угодно (серверы, клиенты). Я использовал это в 2014 году, чтобы запустить агрегат RSS-каналов при запуске агрегатора финансовых новостей.
Текущие (2017 г.) пакеты планирования заданий для метеоров включают maxsavin / SteveJobs.
Старый ответ
- d3-очередь - минималистичный асинхронный (см. ниже), написанный автором D3 Майком Бостоком
- peerlibrary: async - обертка Meteor для популярного пакета async для Node.js и браузера. Предлагает более 20 функций (карта, уменьшение, каждый, фильтр и т. Д.) И поддерживает мощный поток управления (последовательный, параллельный, водопад и т. Д.); см. также этот пример. Должно стать ненужным с Meteor 1.3+.
- artwells: очередь - приоритеты, планирование, ведение журнала, повторная постановка в очередь. Очередь при поддержке MongoDB. Последнее обновление: 2015-ноябрь
- супер базовые пакеты cron: easycron. Последнее обновление: декабрь 2015 г.
- дифференциал: рабочие - порождают рабочие процессы безголового метеора для работы на асинхронных заданиях
Пакеты, которые я бы рекомендовал с осторожностью:
- PowerQueue - очередь асинхронных задач, использование ресурсов газа, повторная попытка не удалась. Поддерживает вложенные очереди. Нет планирования. Никаких тестов, но отличная демоверсия. Не подходит для длительной работы из-за использования рекурсивных вызовов.
Избегайте:
- https://atmospherejs.com/percolatestudio/synced-cron - задания cron, распределенные по нескольким серверам приложений. Больше не поддерживается.
- cron (предупреждение: очень старый)
Существует пакет, основанный на заданиях Cron, который можно использовать для планирования задач на определенные интервалы или даты. Вот пакет: https://atmosphere.meteor.com/package/cron
И если вам случится заглянуть в источник этого пакета, вы заметите, что они просто используют:
Meteor.setInterval( ... , delay );
Поэтому, если вы сохраняете свои задачи в базе данных, а затем загружаете их с интервалами во время запуска, то вы, вероятно, будете на правильном пути.
Если вы ищете что-то специфичное для Meteor, я рад поделиться с вами новым пакетом под названием Steve Jobs. Это делает запуск фоновых заданий так же просто, как вызов метода.
Он имеет все стандартные функции, которые вы ожидаете, такие как запуск задания только один раз, повторение неудачных заданий и т. Д. Вы можете узнать больше об этом на GitHub:
Я предполагаю, что надлежащая поддержка находится на их дорожной карте, но в то же время я сумел сделать это хакерским путем setInterval
, Смотрите пакет cron-tick.