"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.job_handlers = void 0;
const path = require("path");
let job_handlers;
exports.job_handlers = job_handlers;
if (global['app_config'].job.enable_piscina) {
    const Piscina = require('piscina');
    exports.job_handlers = job_handlers = new Map();
    const piscina = new Piscina({
        filename: path.resolve(__dirname, 'worker.js'),
        maxThreads: require('os').cpus().length - 1,
        minThreads: 1,
        maxQueue: 100,
        idleTimeout: 60000,
        concurrentTasksPerWorker: 5, //单个工作线程同时处理的任务数 任务包含异步操作时可以考虑增加
        // resourceLimits: {
        //     maxOldGenerationSizeMb: 1024,
        //     maxYoungGenerationSizeMb: 256,
        //     stackSizeMb: 4,
        // },
    });
    async function run_task(args) {
        return piscina.run(args);
    }
    run_task({ name: 'get_task_keys' }).then(function (data) {
        data.forEach(function (name) {
            job_handlers.set(name, (args) => run_task({ name, args }));
        });
    });
}
else {
    exports.job_handlers = job_handlers = require('./worker')({ name: 'get_task_list' });
}
//# sourceMappingURL=index.js.map