index.ts
1.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import * as path from 'path'
let job_handlers: any
if (global['app_config'].job.enable_piscina) {
const Piscina = require('piscina')
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 {
job_handlers = require('./worker')({ name: 'get_task_list' })
}
export { job_handlers }