Answering questions using worker poolz

This commit is contained in:
mrfry 2020-12-19 09:44:07 +01:00
parent f5f3b51eee
commit d8695682f7
4 changed files with 67 additions and 91 deletions

View file

@ -2,11 +2,12 @@ import { Worker } from 'worker_threads'
import genericPool from 'generic-pool'
import os from 'os'
import logger from './logger'
// import { QuestionDb } from '../types/basicTypes'
// ---------------------------------------------------------------------------
const workerFile = './src/utils/classes.ts'
const workerTimeoutMin = 5 * 1000
const workerTimeoutMax = 10 * 1000
let pool: any = null
let workers: any = null
@ -30,17 +31,17 @@ export function doALongTask(i: Number, obj: any): Promise<any> {
})
})
.catch(function(err) {
console.log('resourcePromise error')
console.log(err)
logger.Log('resourcePromise error', logger.GetColor('redbg'))
console.error(err)
// handle error - this is generally a timeout or maxWaitingClients
// error
})
})
}
export function init(): void {
export function initWorkerPool(): void {
if (workers && pool) {
console.log('WORKER AND POOL ALREADY EXISTS')
logger.Log('WORKER AND POOL ALREADY EXISTS', logger.GetColor('redbg'))
return
}
workers = []
@ -84,27 +85,26 @@ function getAWorker(i) {
const worker = workerTs(workerFile, {
workerData: {
workerIndex: i,
workerTimeoutMin,
workerTimeoutMax,
},
})
worker.setMaxListeners(50)
// worker.on('message', (msg) => {
// console.log(`[MAIN]: Msg from worker #${i}`, msg)
// logger.Log(`[MAIN]: Msg from worker #${i}`, msg)
// })
worker.on('online', () => {
console.log(`[THREAD #${i}]: Worker ${i} online`)
logger.Log(`[THREAD #${i}]: Worker ${i} online`)
})
worker.on('error', (err) => {
console.log(err)
logger.Log('Worker error!', logger.GetColor('redbg'))
console.error(err)
})
worker.on('exit', (code) => {
console.log(`[MAIN]: worker #${i} exit code: `, code)
logger.Log(`[MAIN]: worker #${i} exit code: ${code}`)
})
return worker
}