mirror of
https://gitlab.com/MrFry/mrfrys-node-server
synced 2025-04-01 20:24:18 +02:00
Answering questions using worker poolz
This commit is contained in:
parent
f5f3b51eee
commit
d8695682f7
4 changed files with 67 additions and 91 deletions
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue