我正在使用 Node 服务器来运行 python 脚本。我正在使用 Python shell 包来运行它们,效果很好。它位于我正在运行的 server.js
文件中:
app.get('/start/:fileName', function(req, res) {
let fileName = req.params.fileName;
console.log(fileName)
PythonShell.run(`./python_scripts/${fileName}`, function (err,results) {
console.log('results ',results);
if (err) throw err;
console.log('finished');
});
});
在另一个文件main.js
中我有命令:
function fetchStartEndpoint(fileName) {
fetch(`/start/${fileName}`)
.catch(error => console.log(error));
}``
当单击按钮时,我会调用fetchStartEndpoint
。
这一切都很好,但我想使用多个按钮来运行多个脚本。当我单击该按钮时,脚本会运行,但是当我单击不同的按钮来运行不同的脚本时,第一个脚本会继续运行。我希望它结束并运行第二个。有没有办法覆盖初始脚本并运行第二个脚本而不是重新启动服务器?
最佳答案
我正在快速浏览自述文件 python-shell在我看来,在 shell 实例上调用 end
是停止运行脚本的方法:
运行(脚本,选项,回调)
此方法还返回 PythonShell 实例。
.end(回调)
关闭标准输入流,允许 Python 脚本完成并退出。当进程终止时,可选回调被调用。
基于此,我认为这可以工作:
// First button pressed ...
var shell = PythonShell.run('script.py', function (err, results) {
// script finished
shell = null
});
// Second button pressed ...
if (shell) {
shell.end(function() {
// start second script ...
})
}
关于javascript - 在node.js中切换python脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48369908/