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