繁体   English   中英

由于 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 页面等待脚本执行?

谢谢。

不要运行脚本,而是将请求的详细信息放在作业队列(可以是数据库表,或者,如果您想变得复杂,可以使用 ZeroMQ 之类的东西)并立即返回(在响应中传递作业的 id) .

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

同时,回到客户端,定期(例如每 30 秒)轮询服务器并请求作业 ID。 让服务器检查响应队列以查看作业的数据是否存在,然后响应“这里是”、“尚未准备好”或“已经 15 分钟了,可能出了点问题”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM