Тайм-аут тяжелого API Heroku - PullRequest
       28

Тайм-аут тяжелого API Heroku

0 голосов
/ 21 сентября 2018

Я создаю приложение с нод / экспресс-бэкэнд.Конечная точка имеет очень большое время отклика из-за сложных вычислений (от 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 и фоновые работы.Я читал, что веб-крючки могут помочь, но у меня тоже нет большого опыта работы с веб-крючками.

Заранее спасибо!

...