由于node.js

时间:2016-03-22 11:16:46

标签: javascript node.js shell express ejs

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

节点js在使用shell脚本

的输出执行脚本后响应页面
res.render{
    output: shell_script_output
}

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

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

对此最佳解决方案是什么?如何让ejs页面等到脚本执行完毕?

感谢。

1 个答案:

答案 0 :(得分:1)

不是运行脚本,而是将请求的详细信息放在作业队列上(可能是数据库表,或者,如果你想变得复杂,就像ZeroMQ那样)并立即返回(传递作业的id)回应)。

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

同时,回到客户端,定期轮询服务器(比如说每30秒),并请求作业ID。让服务器检查响应队列以查看该作业的数据是否存在,然后以“Here it is”,“尚未准备好”或“已经15分钟,某些事情可能出错”回复。