2015-05-04 39 views
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文件非常繁重,而且花費了很多時間。但除此之外,這一切似乎工作非常好。

+0

難道是'run_project.sh'無限期地掛起,從而導致您的程序也掛起? – Cristik

+0

我已經從cmd測試了bash文件,它運行良好。但它非常沉重,大約需要5分鐘。這可能是一個問題嗎? –

+0

如果腳本需要5分鐘,那麼你的'router.get()'也需要5分鐘。如果您等待這段時間,請求是否完成?或者它會因網絡服務器容器而中止? – Cristik

回答

0

我不知道實際的問題是什麼。但我更改了bash腳本,並將其分成三個不同的bash腳本。此外,我爲了完成整個過程並在每個頁面上執行一個bash腳本而針對三個不同的頁面進行了路由。 node.js現在工作得很好,我相信問題一定是超時。