WorkerQueueManager是一个worker资源管理工具
- 针对的使用场景:某个任务需要大量的worker协同,比如大数据处理、机器学习等;
- 使用comlink封装了worker的通信,可以直接使用fetch方法发送请求,不需要自己处理worker的通信;
- 支持worker的状态管理,可以获取worker的状态,包括是否可用、是否正在工作、worker的通信地址等;
- 支持worker的生命周期管理,可以设置worker的最大空闲存活时间,当队列的空闲时间达到最大值时,会自动释放资源;
- 支持worker的自动释放,释放后如还有需要会自动重启worker;
- 支持设置worker的并发数量,保障资源尽可能地被利用;
- 支持worker资源的自动分配,一旦woker空闲,立即分配给下一个任务;
- 你可能需要在webpack中正确配置worker-loader才能正常使用这个库;
- 你的woker中需要包装一个exec方法,或在go的opthion.callName中指定某个方法为worker的入口方法;
npm i worker-queue-manager
import { WorkerQueueManager } from 'worker-queue-manager'
import RtrWorker from '../workers/mask2rt.worker.js'
const workerQueueManager = new WorkerQueueManager(RtrWorker, 30000);
export default async function rtReconstrction(structure, options) {
const result = await workerQueueManager.go(structure, options)
return result
}