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

Javascript 由于node.js的响应延迟,连接超时,javascript,node.js,shell,express,ejs,Javascript,Node.js,Shell,Express,Ejs,我有一个ejs页面,它启动GET请求以执行shell脚本 节点js在执行脚本后用shell脚本的输出响应页面 res.render{ output: shell_script_output } 脚本正确执行并在node.js控制台中打印输出 但是我在浏览器中2分钟后出现连接超时错误,因为脚本执行时间超过5分钟 对此,什么可能是最佳解决方案?如何使ejs页面等待脚本执行 谢谢。不要运行脚本,而是将请求的详细信息放在作业队列(可以是数据库表,如果您想变得复杂,可以是ZeroMQ)上,然后立

我有一个ejs页面,它启动GET请求以执行shell脚本

节点js在执行脚本后用shell脚本的输出响应页面

res.render{
    output: shell_script_output
}
脚本正确执行并在node.js控制台中打印输出

但是我在浏览器中2分钟后出现连接超时错误,因为脚本执行时间超过5分钟

对此,什么可能是最佳解决方案?如何使ejs页面等待脚本执行


谢谢。

不要运行脚本,而是将请求的详细信息放在作业队列(可以是数据库表,如果您想变得复杂,可以是ZeroMQ)上,然后立即返回(在响应中传递作业id)

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


同时,回到客户机上,定期(比如每30秒)轮询服务器以请求作业id。让服务器检查响应队列以查看该作业的数据是否存在,然后用“它在这里”、“它还没有准备好”或“已经15分钟了,可能出了问题”进行响应.

您可以增加请求的超时时间,这是一个简单的快速解决方案。您能告诉我怎么做吗???为什么不通过Rabbit mq(redis总线、sqs队列等)建立双向通信,并摆脱等待端的轮询?在可伸缩性和资源优化方面,从客户端轮询搜索特定作业id似乎不是一个好的解决方案