我有一个Python 2.7脚本,可以对OpenTSDB运行扫描命令。该扫描命令将一次找到的每个度量标准返回给命令行一个度量标准。我想在我的Python脚本中一次读取一行输出。看来我可以使它起作用的唯一方法是使用子过程。将标准输出读入var,然后遍历列表。扫描命令可能会返回数百GB的指标,我不想在正在运行的机器上吹响内存。有没有办法做到这一点?以下是我目前拥有的代码
import subprocess
cmd = 'tsdb scan --import --config=/path/to/config 1552483133332 none metric.name tag1=val1 tag2=val2'
query = subprocess.Popen([cmd], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True
for line in query.stdout.readlines():
print line