Repolode
piscinajs

piscinajs/piscina

Пул потоков-воркеров для Node.js, который выносит ресурсоёмкие вычисления из основного цикла событий и поддерживает очереди, отмену задач и статистику выполнения.

Звёзды
5,226
Форки
177
Открытые issues
7
Последний коммит
6 дней назад

Что это?

Piscina — это пул потоков-воркеров для Node.js. Он позволяет приложению отправлять синхронные или асинхронные функции набору потоков Worker, чтобы ресурсоёмкие вычисления выполнялись параллельно и не блокировали основной цикл событий. Каждый воркер загружает экспортированный обработчик из отдельного файла, а результат возвращается в виде Promise.

Пул берёт на себя управление потоками: задаёт их минимальное и максимальное количество, тайм-ауты простоя и настраиваемую очередь задач с необязательным ограничением размера и событиями обратного давления. Задачи можно отменять с помощью AbortSignal, а пул собирает статистику времени выполнения и ожидания. Для воркеров можно задать лимиты памяти, переменные окружения и приоритеты Linux CPU nice.

Piscina поддерживает CommonJS, ESM и TypeScript и требует Node.js 24 или новее.

Ключевые возможности

  • 01Отправляет синхронные или асинхронные функции-обработчики в пул потоков Worker.
  • 02Позволяет настроить минимальное и максимальное количество потоков, а также тайм-ауты простоя.
  • 03Отменяет задачи с помощью AbortSignal или любого EventEmitter, генерирующего событие 'abort'.
  • 04Поддерживает необязательное ограничение размера очереди и события drain для управления обратным давлением.
  • 05Собирает статистику времени выполнения и ожидания, а также метрики загрузки.
  • 06Позволяет задавать лимиты памяти для каждого воркера и необязательный приоритет Linux CPU nice.

Сценарии использования

  • Вынос ресурсоёмких задач, таких как хеширование, обработка изображений или парсинг, из веб-сервера на Node.js.
  • Ограничение параллельного выполнения затратных задач с постановкой избыточных запросов в очередь и управлением обратным давлением.
  • Запуск серверного рендеринга и других синхронных вычислений без блокировки цикла событий.

Быстрый старт

  1. 1

    Создайте main.js и worker.js, как показано в разделе Example файла README

  2. 2

    Запустите main.js с помощью Node.js, чтобы вывести результат

Что важно знать

  • Для работы, согласно README, требуется Node.js версии 24.x или выше.
  • В метаданных репозитория не указана понятная лицензия, хотя в README указана MIT.

Темы

Частые вопросы

Что такое piscina?
Пул потоков-воркеров для Node.js, который выносит ресурсоёмкие вычисления из основного цикла событий и поддерживает очереди, отмену задач и статистику выполнения. Piscina — это пул потоков-воркеров для Node.js. Он позволяет приложению отправлять синхронные или асинхронные функции набору потоков Worker, чтобы ресурсоёмкие вычисления выполнялись параллельно и не блокировали основной цикл событий. Каждый воркер загружает экспортированный обработчик из отдельного файла, а результат возвращается в виде Promise.
piscina можно использовать бесплатно? Какая у него лицензия?
piscina распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
piscina всё ещё поддерживается?
Активно поддерживается. Последний коммит в piscina — 19 окт. 2026 г..
Для чего можно использовать piscina?
Вынос ресурсоёмких задач, таких как хеширование, обработка изображений или парсинг, из веб-сервера на Node.js. Ограничение параллельного выполнения затратных задач с постановкой избыточных запросов в очередь и управлением обратным давлением. Запуск серверного рендеринга и других синхронных вычислений без блокировки цикла событий.
Как установить piscina?
Создайте main.js и worker.js, как показано в разделе Example файла README Запустите main.js с помощью Node.js, чтобы вывести результат
Где скачать piscina?
Исходный код и инструкции по установке — на GitHub: https://github.com/piscinajs/piscina

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Watt — сервер приложений для Node.js, который запускает любые Node.js-приложения в потоках-воркерах, повышая эффективность использования CPU, масштабируемость и наблюдаемость в контейнерах.

2,1 тыс.210JavaScriptApache-2.0Обновлён 2 часа назад