javascript - 在node.js中切换python脚本

标签 javascript python node.js

我正在使用 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/

相关文章:

javascript - 在javascript中访问超出其大小的数组

javascript - 有时会发生 gulp-webserver 错误

node.js - 从表单数据设置 Mongoose 模型属性

javascript - 如何在文本框下居中jquery datepicker

javascript - BeforeUpload 事件中的 $.ajax - Plupload

javascript - 在 lodash 中将 _.set 与 _.each 一起应用

python - 在 Python 中调试外部系统命令

python - 使用 selenium 和 python 从弹出窗口下载并保存多个 csv 文件

python - 在python-opencv中打印读取图像的像素值时出现错误,TypeError: 'NoneType'对象没有属性 '__getitem__'

javascript - 正则表达式 : substring not followed by character