У меня есть приложение node10 express, что-то вроде:
const app = express();
app.use(function(req, res, next) { ..}
app.use( bodyParser.text({
limit: '1mb',
type: '*/*',
})
);
more of those..
app.post('myApiName', [(req, res, next) => {..}, (req, res, next) => {..} .. etc many more]);
https.createServer(sslOptions, app) ...
Но со многими другими маршрутами и промежуточным программным обеспечением. Из-за заблокированных у меня проблем, когда процессор работает на чем-то и «не отвечает» в течение нескольких секунд, я добавил модуль https://github.com/naugtur/blocked-at/blob/master/README.md. Но большая часть трассировки стека, которую он мне предоставляет, начинается с at Server.connectionListener (_http_server.js:319:3),...
. и в файле readme говорится об этом: In some cases your code is not directly called and tracking it down will still be difficult. See how the HTTP test case produces a stack pointing to Server.connectionListener as the slow function, because everything inside of it is synchronously called. You can always wrap your handlers' code in setImmediate if you become desperate. Or use resources.
. Я понимаю, что мне нужно запускать мои обработчики из другого «источника», который будет запускаться из другой задачи в цикле событий (я, вероятно, плохо формулирую), но я не совсем понимаю, что именно я могу сделать, используя предложение setImmediate,Я видел, что есть некоторая библиотека npm https://www.npmjs.com/package/express-async-handler для обработки ошибок, но я все еще не уверен, как именно должен выглядеть мой код (особенно потому, что у меня много обработчиков и промежуточных программ). Я буду рад получить некоторые предложения или фрагменты кода, чтобы понять, как улучшить трассировку стека.