由于 node.js 的延迟响应,连接超时

Connection time out because of delayed response by node.js

我有一个 ejs 页面,它发起一个 GET 请求来执行一个 shell 脚本。

并且node js执行脚本后响应页面返回shell脚本

res.render{
    output: shell_script_output
}

脚本被正确执行并在 node.js 控制台中打印输出。

但是我在浏览器中 2 分钟后收到连接超时错误,因为脚本执行了超过 5 分钟。

最佳解决方案是什么?如何让ejs页面等待脚本执行?

谢谢。

而不是 运行 脚本,将请求的详细信息放在作业队列上(可以是数据库 table 或者,如果你想变得复杂,比如 ZeroMQ)和return 立即(在响应中传递作业的 ID)。

让一个单独的进程监视队列并在有作业时触发 shell 脚本。脚本完成后,将结果放入响应队列。

同时,回到客户端,定期(比如每 30 秒)轮询服务器,请求作业 ID。让服务器检查响应队列以查看作业的数据是否存在,然后使用 "Here it is"、"It isn't ready yet" 或 "It's been 15 minutes, something has probably gone wrong".

进行响应