我想从我的烧瓶应用程序中启动另一个python进程。此过程一次打印一些反馈。然后我尝试使用socketio将此反馈发送到我的应用程序的前端。但是,从此子进程发送的消息永远不会到达。
执行我的程序的函数:
def executePY(cmd):
popen = Popen(cmd, stdout=PIPE, universal_newlines=True)
for stdout_line in iter(popen.stdout.readline, ""):
yield stdout_line
popen.stdout.close()
调用Execution然后等待响应的函数:
def test():
for statement in executePY(['python3', '-u', 'bla.py']):
send_to_frontend(statement)
将消息发送到前端的功能:
def send_to_frontend(msg):
print(msg) # The Message arrives here!
socketio.emit('message', msg, namespace='/bla')
接收前端的消息:
var namespace = '/editor';
var socket = io.connect('http://127.0.0.1:5000' + namespace);
// Python Output
socket.on('message', function(msg) {
console.log(msg); // No Message here!
});
答案 0 :(得分:0)
在搜索答案时,我偶然发现了以下问题:https://stackoverflow.com/a/34649180/4620643
按照简单替换的方法
import subprocess
与
from eventlet.green import subprocess
解决了这个问题。