重载API端点Heroku超时

时间:2018-09-21 02:29:28

标签: express heroku redis kue

我正在构建具有节点/快速后端的应用程序。由于计算量大(花费1-2分钟),端点的响应时间非常长。 Heroku在30秒让我厌烦。

我正在使用Kue和redis来完成redis中的计算。

一点伪 1.当用户点击端点时 2.开始工作 3.调用作业后发送响应,以确保不会超时 4.作业完成后,响应/发送完成的作业/数据=>,它将进入redux。

到目前为止,这是我的代码:

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和背景的工作非常陌生。我已经读过Webhooks可以提供帮助,但是我对Webhooks也没有太多经验。

提前谢谢!

0 个答案:

没有答案