Я столкнулся с проблемой, когда я вызываю скрипт на python из приложения Electron.js, используя модуль python-shell
npm.У меня есть цикл while
, который ожидает ввода sys.stdin.readlines()
:
Python-скрипт:
while True:
lines = sys.stdin.readlines()
if len([s for s in lines if 'stop' in s]) > 0:
print('stop')
sys.stdout.flush()
elif len([s for s in lines if 'do a thing' in s]) > 0:
thing()
И мое приложение Electron.js слушает сообщение 'stop'
на рисункеесли он должен уничтожить скрипт:
Электронный скрипт вызова:
pyShell.on(‘message’, function(message){
if(message === 'stop'){
// Kill script
}
});
Я отправляю событие остановки в экземпляр pyShell через stdin следующим образом, который соответствует оболочке pythonдокументация:
Электрон, слушающий стандартный вывод:
pyShell.send(‘stop’);
Это не работает.Stdin кажется пустым, хотя я отправил ему 'stop'
, используя pyShell.send()
.Почему stdin пуст и что я могу сделать, чтобы это исправить?