进度条不在Kubernetes的Python容器中更新

问题描述 投票:0回答:1

我想在Kubernetes的Python容器中使用一个简单的进度条。但是,在作业完成且进度条达到100%之前,它不会输出任何内容。完全相同的代码在本地Docker容器中完美运行。那么Kubernetes到底有什么阻止我在日志中看到进度条实时更新?

进度条形码:

import sys
import time


class Color:
    BOLD = '\033[1m'
    ENDC = '\033[0m'


ERASE_LINE = '\x1b[2K\r'


def percentage(current, total):
    percent = 100 * float(current) / float(total)
    return percent


class ProgressBar:

    def __init__(self, total):
        self._total = total
        self._current = 0
        self.print()

    def update(self):
        self._current += 1
        self.print()

    def print(self):
        percent = percentage(self._current, self._total)
        sys.stdout.write("\r")
        sys.stdout.write(Color.BOLD + "[%-50s] %d%%" % ('=' * int(percent / 2), percent) + Color.ENDC)
        sys.stdout.flush()


if __name__=="__main__":
    print("Ready to run soon...")
    time.sleep(10)
    print("Running!")
    pbar = ProgressBar(255)
    for i in range(255):
        time.sleep(0.03)
        pbar.update()
python docker logging kubernetes
1个回答
3
投票

记录时,通常需要登录以\n结尾的完整行,而不是将TTY中的内容显示给人。而不是进度条,我通常建议像打印出10%...\n20%...\n etc。由您决定打印当前状态的频率。

更新:

您可以更新脚本以检测终端是否为TTY,并相应地更改行为

用这个:

import os, sys
if os.isatty(sys.stdout.fileno()):
© www.soinside.com 2019 - 2024. All rights reserved.