0
我的代碼陷在這個函數中。它進入一個回調鏈。有人可以引導我通過它嗎?Node.js卡在回調中
router.get('/search',function(req, res, next){
//Check/Convert the selected query to MPEG
//Color_Analysis.py -d path/to/query -c 1 :- outputs a file with 150 lines & Avg.py
//back.py -d path/to/query :- will generate file with 8/10 lines.
//Audio.py index_number_of_query :- will output a vector of weights
//Combine all outputs and display the frame.
console.log("I entered-1 :(");
queryPath = "/home/akshay/Desktop/576_Pro/MediaServer/public/dataset/query";
queryFolder = queryPath+'/'+req.param('query');
console.log(queryFolder);
console.log("I entered-2 :(");
// exec("ba(sh ~/Desktop/576_Pro/MediaServer/public/run_project.sh",function(err, stdout, stderr){
console.log("I entered-3 :(");
exec("bash ~/Desktop/576_Pro/MediaServer/public/run_project.sh "+queryFolder,function(error, stdout, stderr){
if(error){
console.log('Akshay');
console.log('error'+error);
return;
}
console.log("Error "+stderr+" stdout "+stdout);
res.writeHead(302, {'Location': '/results'});
res.end();
});
我沒有任何想法,但我只是想知道,如果我的bash文件沒有做出node.js回調。這是被包含在上面的代碼中run_project.sh bash的文件:
#!/bin/sh
echo "In Bash"
cd '/home/akshay/Desktop/576_Pro/MediaServer/public/python/'
echo "Convert query to mp4"
#./run_project2.sh $1
#python createpng.py -d $1 > supress.txt
echo "Converted to mp4"
echo "Started Color"
python color/Color_analysis.py -d $1 -c 1 > ../descriptors/color_temp.txt
python color/color_out.py ../descriptors/color_temp.txt > ../descriptors/color.txt
python color/color_result.py ../descriptors/color_temp.txt > ../descriptors/frame_info.txt
python color/color_graph.py ../descriptors/color_temp.txt > ../descriptors/graph_info.txt
echo "Finished Color"
# python color/color_check.py query_color.txt > color_out
echo "Started Audio"
python audio/Audio_Init.py
python audio/Audio.py $1 > ../descriptors/audio.txt
echo 'Finished Executing'
echo 'Started Motion'
python motion/back.py -d $1 > ../descriptors/video_desc_temp.txt
python motion/optical_check.py -d '/home/akshay/Desktop/576_Pro/MediaServer/public/descriptors/motion' -q ../descriptors/video_desc_temp.txt > ../descriptors/motion.txt
echo 'Finished Video'
我之前已經在node.js中整合它測試的bash腳本,並面臨着把它沒有問題。它運行得非常好,除了事實上大約需要5分鐘,因爲上面執行的python文件非常繁重,而且花費了很多時間。但除此之外,這一切似乎工作非常好。
難道是'run_project.sh'無限期地掛起,從而導致您的程序也掛起? – Cristik
我已經從cmd測試了bash文件,它運行良好。但它非常沉重,大約需要5分鐘。這可能是一個問題嗎? –
如果腳本需要5分鐘,那麼你的'router.get()'也需要5分鐘。如果您等待這段時間,請求是否完成?或者它會因網絡服務器容器而中止? – Cristik