gpt4 book ai didi

python - 关闭 js 上的 PythonShell( Electron + flask )

转载 作者:行者123 更新时间:2023-12-01 08:13:16 24 4
gpt4 key购买 nike

我用谷歌搜索了一下,但找不到正确的答案,我不得不说我对 NodeJS 和 Electron 来说是新手:我的问题是我已经使用 Python-Shell 将我的 Electron 应用程序与 Flask 连接起来。但是当我关闭我的应用程序时,即使关闭终端,Flask 仍然在后台运行。

这就是我将应用程序连接到 flask 的方式:

var pyshell =  require('python-shell');

pyshell.PythonShell.run('engine.py', function (err, results) {
if (err) console.log(err);
});

有什么方法可以“取消运行”(关闭、退出、终止)pyshell?我已经尝试过,但不起作用:

app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
pyshell.kill('engine.py'); // <-- I'm guessing here
app.quit()
}

这是完整的代码,很短,也许有助于识别问题:

const {app, BrowserWindow} = require('electron')

function createWindow () {
window = new BrowserWindow({width: 800, height: 600})
window.loadFile('index.html')

var pyshell = require('python-shell');

pyshell.PythonShell.run('engine.py', function (err, results) {
if (err) console.log(err);
});
}

app.on('ready', createWindow)
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
pyshell.kill('engine.py'); // <-- I'm guessing here
app.quit()
}
})

最佳答案

使用pyshell.kill()实际上并没有杀死进程,而是发出信号让子进程停止。但 child 有时会停不下来。

尝试使用 tree-kill npm 包来终止该进程,它可以很好地处理此类情况。

// Declaring tree-kill
var kill = require('tree-kill');

//Killing python process
kill(pyshell.pid);

关于python - 关闭 js 上的 PythonShell( Electron + flask ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55105961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com