刷新链接到nodeJS的python文件

刷新链接到nodeJS的python文件,python,node.js,Python,Node.js,我在一个express应用程序中将一个nodeJS文件与一个Python文件链接起来。我的python文件生成一个唯一的URL。但是,每当我想用该URL进行另一个测试时,我都必须重新启动服务器,因为当我刷新页面时,Python文件不会被刷新。这正常吗?每次刷新页面时,我能做些什么让python文件刷新吗 这是我的nodeJS代码: var express = require('express'); var router = express.Router(); var spawn = requir

我在一个express应用程序中将一个nodeJS文件与一个Python文件链接起来。我的python文件生成一个唯一的URL。但是,每当我想用该URL进行另一个测试时,我都必须重新启动服务器,因为当我刷新页面时,Python文件不会被刷新。这正常吗?每次刷新页面时,我能做些什么让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;`

谢谢大家;)

问题是当Node.js服务器加载时:它获取
my_script.py
的结果,然后将结果值设置为
url
,该结果永远不会刷新。您将希望将用于获取url的代码移动到函数中。我也从移动到,因为您希望等待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;

它适用于以下代码:

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;

我理解你的答案,它看起来不错,但不起作用。NodeJS不执行该函数。我尝试将一些
控制台.log
放在函数中进行检查。我也尝试过同步,但也不起作用。。。我不明白为什么。谢谢!必须删除stdout“end”,它才能工作;)