Я пытаюсь настроить процесс 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')