我在Google周围搜索,但是我找不到合适的答案,我不得不说我是NodeJS和electronic的新手:我的问题是我已使用Python-Shell将我的电子应用程序与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()
}
})
答案 0 :(得分:1)
使用pyshell.kill()
并没有杀死进程,而是表明子进程停止了。但是,孩子有时无法停下来。
尝试使用tree-kill
npm软件包杀死该进程,它可以很好地处理此类情况。
// Declaring tree-kill
var kill = require('tree-kill');
//Killing python process
kill(pyshell.pid);