python 个脚本的 Rundeck 日志输出未在线刷新
Rundeck log output isn't refreshed online for python scripts
我在 Rundeck 中创建简单的作业,只有一个 bash 脚本步骤:
#!/bin/bash
for i in {1..10}
do
echo "$i"
sleep 5
done
其构建的日志输出为:
22:26:12 1
22:26:17 2
22:26:22 3
22:26:27 4
22:26:32 5
22:26:37 6
22:26:42 7
22:26:47 8
22:26:52 9
22:26:57 10
如您所见,echo
命令在前一个 echo
.
正好 5 秒后打印
现Python版本:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
for i in range(10):
print i
time.sleep(5)
日志输出:
22:29:17 0
22:29:17 1
22:29:17 2
22:29:17 3
22:29:17 4
22:29:17 5
22:29:17 6
22:29:17 7
22:29:17 8
22:29:17 9
这次完成作业后立即打印了整个日志。
Python 的脚本是否有机会获得与 bash 脚本相同的日志记录方式?
它的工作原理是这样的:
import os
import time
for i in range(10):
os.system('echo ' + str(i))
time.sleep(5)
PD:收获不错。
默认情况下,python 缓冲输出直到完成。如果设置 PYTHONUNBUFFERED
环境变量,它不会缓冲,而是在脚本运行时打印输出。
https://www.systutorials.com/how-to-flush-stdout-buffer-in-python/
我在 Rundeck 中创建简单的作业,只有一个 bash 脚本步骤:
#!/bin/bash
for i in {1..10}
do
echo "$i"
sleep 5
done
其构建的日志输出为:
22:26:12 1
22:26:17 2
22:26:22 3
22:26:27 4
22:26:32 5
22:26:37 6
22:26:42 7
22:26:47 8
22:26:52 9
22:26:57 10
如您所见,echo
命令在前一个 echo
.
现Python版本:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
for i in range(10):
print i
time.sleep(5)
日志输出:
22:29:17 0
22:29:17 1
22:29:17 2
22:29:17 3
22:29:17 4
22:29:17 5
22:29:17 6
22:29:17 7
22:29:17 8
22:29:17 9
这次完成作业后立即打印了整个日志。
Python 的脚本是否有机会获得与 bash 脚本相同的日志记录方式?
它的工作原理是这样的:
import os
import time
for i in range(10):
os.system('echo ' + str(i))
time.sleep(5)
PD:收获不错。
默认情况下,python 缓冲输出直到完成。如果设置 PYTHONUNBUFFERED
环境变量,它不会缓冲,而是在脚本运行时打印输出。
https://www.systutorials.com/how-to-flush-stdout-buffer-in-python/