#python #node.js #electron
#python #node.js #electron
Вопрос:
Я погуглил, но не могу найти правильного ответа, должен сказать, что я довольно новичок в NodeJS и electron: Моя проблема в том, что я подключил свое приложение electron к flask с помощью 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()
}
})
Ответ №1:
Использование pyshell.kill()
на самом деле не остановило процесс, скорее, оно сигнализирует дочернему процессу об остановке. Однако иногда дочернему элементу не удается остановиться.
Попробуйте использовать tree-kill
пакет npm, чтобы остановить этот процесс, он отлично справляется с такими сценариями.
// Declaring tree-kill
var kill = require('tree-kill');
//Killing python process
kill(pyshell.pid);
Комментарии:
1. Большое вам спасибо, к сожалению, я давно заархивировал этот проект из-за других приоритетов, я попробую это, как только снова начну работать над этим. 😉