Вот моя простая конечная точка API колбы:
# -*- coding: utf-8 -*-
from flask import Flask, render_template
from subprocess import PIPE, Popen
app = Flask(__name__)
@app.route('/', methods=['GET'])
def main():
cmd = Popen(['vmstat', '-a', '-w'], stdout=PIPE, stderr=PIPE)
output, err = cmd.communicate()
output = output.splitlines()
return render_template('stats_template.html', output=output)
if __name__ == '__main__':
app.run(port=54321, host='0.0.0.0')
Шаблон выглядит так:
<ul>
{% for l in output %}
<p>{{ l }}</p>
{% endfor %}
</ul>
Программа работает нормально, однако разрывы строк, столбцы не сохраняются, а выходные данные в браузере читаются не так:
b'procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------'
b' r b swpd free inact active si so bi bo in cs us sy id wa st'
b' 1 0 13068 1599088 560976 790220 0 0 36 73 139 597 21 41 38 0 0'
Пытались избавиться от b'
вместе с выводом, точно таким же, как в оболочке linux.
Ценю любое понимание.
Edit1: Добавление вывода vmstat
в качестве ссылки. Как видите, ответ от колбы не сохранил пробелы и столбцы.
$ vmstat -a -w
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
r b swpd free inact active si so bi bo in cs us sy id wa st
1 0 13068 1611488 563132 776448 0 0 35 73 159 693 21 42 37 0 0