Я создаю приложение с нод / экспресс-бэкэнд.Конечная точка имеет очень большое время отклика из-за сложных вычислений (от 1 до 2 минут).Heroku останавливает меня на 30 секунд.
Я использую Kue и redis для выполнения вычислений в redis.
Немного псевдо 1. Когда пользователь достигает конечной точки 23. Инициируйте задание 3. Отправьте ответ после вызова задания, чтобы не пропустить время из герои 4. После завершения задания ответьте / отправьте завершенное задание / данные =>, что приведет к избыточному значению.
Вот мой код, так чтоfar:
const redis = require('redis');
const client = redis
.createClient();
const kue = require('kue');
const queue = kue.createQueue();
router.post('/endpoint', (req, res) => {
const param = req.body.param;
var job = queue
.create('job', param)
.priority('high')
.save(err => {
if (err) {
console.log('failed');
process.exit(0);
return;
}
job.on('complete', result => {
res.send(result);
console.log('completed');
});
job.on('failed', errorMessage => {
console.log(errorMessage);
process.exit(0);
});
});
queue.process('job', async (job, done) => {
// heavy heavy computation
// heavy heavy heavy heavy
// heavy heavy heavy
//output is results => passed into promise
done(null, await Promise.all(results));
});
res.json({ message: 'job in progress' });
});
Проблема с этим кодом заключается в том, что я не могу отправить ответ заголовка после его установки.Я очень новичок в Redis и очень новые KUE и фоновые работы.Я читал, что веб-крючки могут помочь, но у меня тоже нет большого опыта работы с веб-крючками.
Заранее спасибо!