nodejs Worker_Threads с expressjs просто порождает одного работника - PullRequest
1 голос
/ 23 апреля 2020

я написал пример кода для Worker_Thread в nodejs мой код Worker:

const {
    Worker, isMainThread, parentPort
} = require('worker_threads');

if (isMainThread) {

    module.exports.func=()=>{
        return new Promise((resolve, reject) => {
            let worker = new Worker(__filename);
            worker.on('message', resolve);
            worker.on('error', reject);
            worker.on('exit', (code) => {
                if (code !== 0)
                    reject(new Error(`Worker stopped with exit code ${code}`));
            });
        });

}
} else {
    const s = new Date().getSeconds();
    while (true) {
        if (new Date().getSeconds() - s >= 5) {
            console.log("its Done after 5 sec")
            parentPort.postMessage('its Done')
            break;
        }
    }
}

, поэтому при запуске в другом файле его штрафная порожденная рабочая станция для каждого вызова, например:

const {func}  = require('./workerFile');
func().then()
func().then()

выполнить два раза и в одно и то же время !!!

, но когда я использовал Expressjs, он не будет работать:

app.get('/', (req,res)=>{
 func().then(()=>{
     res.send('Result')
 }).catch((e)=>{
     res.send('err')
 })       
})

это всего лишь один рабочий-супруг для маршрута '/' и ожидания до завершения и может запросить маршрут снова {другой маршрут не заблокирован}

так как я могу это исправить? Я хочу, чтобы spawn worker для каждого запроса '/'

tnx для чтения <3 </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...