【问题标题】:Node js request that takes long time to get a response avoid error 504需要很长时间才能获得响应的节点js请求避免错误504
【发布时间】:2018-01-18 15:37:49
【问题描述】:

我有一个节点 js 服务器 A 向另一台服务器 B 发出请求,然后该服务器 B 必须进行一个非常复杂的操作,该操作需要相当长的时间才能完成(它会触发一个在大约 3 分钟内计算的算法)。 我希望服务器 B 用算法的结果响应请求。 但在发送响应之前,服务器 A 收到状态码为 504 的响应。

我该如何处理?我怎样才能避免这个 504 错误,因为在我的情况下,响应很慢是正常的。

【问题讨论】:

  • 您使用的是request 模块还是什么?不能延长超时时间吗?
  • 我找到了这个包:github.com/expressjs/timeout 但我不能保证(从来没有这个用例)
  • 我尝试了请求模块的超时选项,但它没有改变任何东西。
  • 我也试过这个包,没有成功。
  • 我使用 express 我也尝试过 server.timeout = 300000 和 server.setTimeout(300000) 但两者都没有工作

标签: node.js http-status-code-504


【解决方案1】:

也许你可以试试Server Sent Events。我在类似的情况下取得了成功,并且如果您的计算算法发出某种进度,还允许将进度报告给用户。它基本上将响应流式传输回客户端。

res.writeHead(200, {
  'Content-Type': 'text/event-stream',
  'Cache-Control': 'no-cache',
  'Connection': 'keep-alive'
});

随后是进度或其他消息

res.write(JSON.stringify(progress)+ '\n\n');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2018-07-31
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    相关资源
    最近更新 更多