gpt4 book ai didi

python - Paramiko exec_command 卡在 docker exec 上

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:56 28 4
gpt4 key购买 nike

我正在使用 Paramiko 测试来自外部系统的 docker 命令(我需要这样做,我不能只构建容器并在本地测试它),并且我尝试运行的测试用例涉及启动 Apache Spark 和运行示例之一,特别是 SparkPi。由于某种原因,我的 python 脚本卡在下面的 docker exec ... 命令上。但是,之前执行过其他 docker exec,并且手动运行所有内容都没有遇到问题。只有当我将所有内容都放入脚本中时,它才会中断。

命令:

stdin, stdout, stderr = ssh_client.exec_command(f'docker exec {spark_container_id} bash -c \'"$SPARK_HOME"/bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master spark://$(hostname):7077 "$SPARK_HOME"/examples/jars/spark-examples_2.11-2.1.1.jar {self.slices_to_calculate}\'')
print("\nstdout is:\n" + stdout.read() + "\nstderr is:\n" + stderr.read())

知道是什么原因造成的吗?为什么?

最佳答案

发现这是因为我没有get_pty=True exec_command 的参数。情况一定是通过将​​终端连接到 spark-submit命令输出被正确打印。所以解决这个问题的方法是

stdin, stdout, stderr = ssh_client.exec_command(f'docker exec -t {spark_container_id} bash -c \'"$SPARK_HOME"/bin/spark-submit ...', get_pty=True)

注意:通过使用 get_pty=True stdoutstderr exec_command的合并起来。

关于python - Paramiko exec_command 卡在 docker exec 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55959525/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com