【发布时间】:2021-02-03 14:38:51
【问题描述】:
我正在尝试使用 subprocess.Popen 来检查 Kafka 消费者组并记录他们的状态,但它似乎并没有等待所有命令运行。它没有给我任何标准输出,但它也返回一个退出代码 0。
prompt = ["cd", "~/path/to/kafka_2.11-2.1.0;", "pwd;", "./bin/kafka-consumer-groups.sh",
"--bootstrap-server", "localhost:9092", "--describe", "--group", "groupname"]
response = subprocess.run(prompt, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
shell=True, check=True)
print(response)
打印:
CompletedProcess(args=['cd', '~/path/to/kafka_2.11-2.1.0;', 'pwd;', './bin/kafka-consumer-groups.sh', '--bootstrap-server', 'localhost:9092', '--describe', '--group', 'groupname'], returncode=0, stdout=b'', stderr=b'')
pwd 命令主要是测试它是否会返回任何类型的 stout,它不会被保留。
我查看了子进程的文档,但没有看到任何表明它无法捕获多个标准输出的信息。另外,根据日志, CompletedProcess 在不到 10 毫秒内返回,而在我的机器上运行 cd ~path/to/kafka_2.11-2.1.0; pwd; ./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group groupname 大约需要 10-15 秒。
请注意我使用的是python3.5.2
【问题讨论】:
标签: python apache-kafka subprocess python-3.5