Python: выходной канал подпроцесса не обновляется в длительном процессе - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь настроить процесс python, который прослушивает порт и запускает команду curl при каждом подключении клиента, передавая результаты curl клиенту.

Я настроил следующий скрипт, но результаты, переданные клиенту (output1+output2), никогда не меняются после первого запуска curl. Результаты должны меняться, потому что сама команда curl каждый раз возвращает разные результаты.

Я не уверен, что происходит. Либо локон запускается только один раз и никогда больше. Или труба не промывается?

from flask import Flask
import subprocess
import os

cmd1 = "curl -m 15 -s http://cluster.xxxxx.com:8080/suggestions | jq -r 'to_entries[] | [.key, .value] | @tsv'"
ps1 = subprocess.Popen(cmd1,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
output1 = ps1.communicate()[0]

cmd2="curl -m 15 -s http://localhost:8080/directories?sum=diskspaceConsumed | jq -r 'to_entries[] | [.key, .value] | @tsv'| grep -v 'dt='| sed 's/^/HDFSdiskspaceConsumed{hdfs_dir=\"/; s/\t/\"}\t/'"
ps2 = subprocess.Popen(cmd2,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,bufsize=0)
output2 = ps2.communicate()[0]

output = output1+output2
app = Flask(__name__)

@app.route("/metrics/")
def home():
    return output

if __name__ == "__main__":
    app.run(debug=False,host='0.0.0.0')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...