@app.route('/start', methods=['POST']) def start(): global process if process: return jsonify({'message': 'Command already running.'})

process = subprocess.Popen(['iperf3', '-s', '-p11111'], stdout=subprocess.PIPE, universal_newlines=True)

def stream():
    i = 0
    for line in iter(process.stdout.readline, ''):
        output = line.strip()
        i += 1
        print(i, output)
        socketio.emit('stream_output', output)
        socketio.sleep(0.1)  # 控制每次循环的间隔时间,单位为秒

socketio.start_background_task(stream)
return jsonify({'message': 'Command started.'})

在上述代码中,我们使用iter函数来创建一个可迭代对象,它会不断地调用process.stdout.readline方法来读取输出的每一行。当process.stdout.readline返回空字符串时,表示输出已经结束,循环结束。在每次循环中,我们通过socketio.emit方法将输出发送给客户端,并使用socketio.sleep方法来控制每次循环的间隔时间,以实现实时输出的效果。

Flask 应用中使用 iperf3 实时输出结果

原文地址: https://www.cveoy.top/t/topic/qyFk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录