ajax+paramiko执行耗时脚本问题
ajax post到django后台,paramiko远程执行耗时为5分钟的脚本,并取回echo值
执行结果为,一次成功,一次失败,交替进行。
前后端代码如下:
$.ajax({
type: 'POST',
url: "/android/test_deploy_one/"+sub_id+"/?fresh=" + Math.random(),
data: {csrfmiddlewaretoken:'{{csrf_token}}' },
timeout : 600000, //超时时间:600秒
success: function(data){
layer.close(ii);
if(data == "success"){
show_info_msg("完成");
}else{
show_info_msg("失败");
}
subTable.ajax.reload()
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status); //失败时为0
alert(XMLHttpRequest.readyState);//失败时为0
alert(textStatus);//失败时为 error
}
});
def exe_and_get_echo(self, cmd_script):
"""
远程执行脚本,并且返回脚本的打印输出
:return:
"""
console = ""
s = paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
s.connect(self.ip, port=self.port, username=self.username, password=self.password, timeout=self.timeout,
allow_agent=False, look_for_keys=False)
#失败时,uwsgi日志在这里卡住,前端status 为fail
stdin, stdout, stderr = s.exec_command(cmd_script, timeout=600)
except Exception as e:
return console
else:
console = stdout.read()
s.close()
return console
奇怪的是即使成功,也有时报下面的错误:
Fri Jul 7 19:57:30 2017 - SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) on request /android/test_deploy_one/14/?fresh=0.97083899214899 (ip 172.16.169.220) !!!
Fri Jul 7 19:57:30 2017 - uwsgi_response_writev_headers_and_body_do(): Broken pipe [core/writer.c line 296] during POST /android/test_deploy_one/14/?fresh=0.97083899214899 (172.16.169.220)
OSError: write error
求大神解答。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论