2

我正在使用以下示例在烧瓶中利用 socketio 库:

https://github.com/miguelgrinberg/Flask-SocketIO/tree/master/example

我想通过 执行命令subprocess(),并将其输出发送socketio到后台线程。

我在这里使用 ping 作为示例。以下似乎不起作用:

def background_thread:
   command = ['ping', '-n', '3', '127.0.0.1']                                                            
    process = Popen(command, shell=True, stdout=PIPE, stderr=PIPE,                                        
                    close_fds=True, preexec_fn=os.setsid)                                                 

    session['pid'] = process.pid                                                                          

    for out in iter(process.stdout.readline, b""):                                                        
        out = '<pre>' + out + '</pre>'                                                                    
        count += 1                                                                                        
        socketio.emit('my response', {'data': out, 'count':count}, namespace='/test')                     
        time.sleep(0.001)                                                                                 

    socketio.out = "Command finished." + '<br /><br />'                                                   
    emit('exec_terminate', {'data': out})  

事实上,如果我尝试socketio.emit()在 while 循环之外使用该函数,如示例所示。

它似乎不起作用,这让我很困惑。

4

0 回答 0