我正在使用以下示例在烧瓶中利用 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 循环之外使用该函数,如示例所示。
它似乎不起作用,这让我很困惑。