从Subprocess发送到前端时,Python SocketIO消息丢失

时间:2018-02-14 16:23:26

标签: javascript python flask socket.io subprocess

我想从我的烧瓶应用程序中启动另一个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!
});

1 个答案:

答案 0 :(得分:0)

在搜索答案时,我偶然发现了以下问题:https://stackoverflow.com/a/34649180/4620643

按照简单替换的方法

import subprocess

from eventlet.green import subprocess

解决了这个问题。