Heroku上的H12超时错误及其缓解方法

时间:2018-09-08 18:02:39

标签: javascript node.js post heroku timeout

我的应用程序由带有表单的索引页组成。

当用户提交表单时,app.post()将获取表单数据并将其传递给大数据处理功能。 此功能肯定会花费时间。

问题是发布发生了,没有res.render()发生了,并且Heroku认为存在超时,并发出了超时错误(code=H12)。

特别是:

2018-09-07T17:47:27.555737+00:00 heroku[router]: at=error code=H12 desc="Request
 timeout" method=POST path="/sc" request_id=21e8b890-4072-426e-bac3-91c3646a0301 fwd="130.43.124.255" dyno=web.1 connect=0ms service=30001ms status=503 bytes=0 protocol=http

我可以通过在res.render()上执行app.post()来解决此问题。不幸的是,这是不可能的。

原因是耗时功能完成后,我以.txt文件的形式向用户发送了一些数据以进行下载。 这是执行此操作的代码:

var fileContents = Buffer.from(result, 'ascii');
var readStream = new stream.PassThrough();
readStream.end(fileContents);
res.set('Content-disposition', 'attachment; filename=' + fileName);
res.set('Content-Type', 'text/plain');
readStream.pipe(res);

由于我使用res.set(),因此无法发送文件并执行res.render()

但是在执行我刚刚发布的这段代码之前,请求长时间没有响应,并且Heroku认为这是超时。

那么,如何缓解H12超时错误呢? 也许可以选择完全禁用或设置很大的超时时间吗?

0 个答案:

没有答案