2017-05-26 67 views
1

我將一個nodeJS文件與一個快速應用程序中的Python文件鏈接起來。我的python文件生成一個唯一的URL。但是,每次我想用該URL進行另一個測試時,我都必須重新啓動服務器,因爲當我刷新頁面時,Python文件不會刷新。這是正常的嗎?每次刷新頁面時,我可以做些什麼來刷新我的python文件?刷新鏈接到nodeJS的python文件

這裏是我的代碼的NodeJS:

var express = require('express'); 
var router = express.Router(); 
var spawn = require("child_process").spawn; 

var process = spawn('python',["public/python/my_script.py"]); 

var url = ""; 
process.stdout.on('data', function (data){ 
    url += data.toString(); 
}); 

/* GET home page. */ 
process.stdout.on('end', function(){ 
    console.log("URL générée !"); 
    router.get('/', function(req, res, next) { 
    res.render('index', { 
     auth_url: url 
    }); 
    }); 
}); 

module.exports = router;` 

謝謝你,夥計們;)

回答

-1

它的工作原理與代碼:

var express = require('express'); 
var router = express.Router(); 
var spawnSync = require("child_process").spawnSync; 

/* Gets a new url every time it's called */ 
function get_url() { 
    var process = spawnSync('python', ["public/python/my_script.py"]); 
    return process.stdout.toString().trim(); 
} 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    var url = get_url(); 
    res.render('index', { 
     auth_url: url //Now call the function 
    }); 
}); 

module.exports = router; 
0

問題是,當你的Node.js服務器負載高達:它得到的my_script.py結果然後將所得到的值如url,這個結果永遠不會刷新。您將需要將獲取網址的代碼移到功能中。我也從spawn移動到spawnSync,因爲您想等待Python腳本的結果。

var express = require('express'); 
var router = express.Router(); 
var spawnSync = require("child_process").spawnSync; 

/* Gets a new url every time it's called */ 
function get_url() { 
    var process = spawnSync('python', ["public/python/my_script.py"]); 
    return process.stdout.toString().trim(); 
} 

/* GET home page. */ 
process.stdout.on('end', function(){ 
    console.log("URL générée !"); 
    router.get('/', function(req, res, next) { 
    res.render('index', { 
     auth_url: get_url() //Now call the function 
    }); 
    }); 
}); 

module.exports = router; 
+0

我明白你的答案,它看起來不錯,但它不工作。 NodeJS不通過該函數。我試圖在函數中加入一些'console.log'來檢查。 –

+0

@AaronAbenDanan - 我已經更新了我的回答 – alxwrd

+0

我也嘗試過同步,但它也不起作用...我不明白爲什麼。 –