Python print语句在Teamcity控制台无输出问题排查咨询
sys.stdout.flush() 调用位置说明
1. 单次打印后立即调用
在每一条你需要输出到控制台的print语句之后直接调用即可,示例代码如下:
import sys # 你的业务/调试打印逻辑 print(f"当前请求响应状态码:{status_code}") # 紧跟flush调用 sys.stdout.flush()
这种方式适合仅需要输出少量调试信息的场景,精准控制需要输出的内容。
2. 直接使用print内置flush参数(更推荐)
Python 3.3及以上版本的print函数原生支持flush参数,不需要额外导入sys模块调用flush方法,修改成本更低:
print(f"当前请求响应状态码:{status_code}", flush=True)
3. 全局统一配置自动flush
如果调试打印的内容很多,逐个修改print语句成本太高,可以在脚本入口最开头添加全局配置,让所有print语句默认自动flush:
import sys import functools # 全局替换print为默认开启flush的版本 print = functools.partial(print, flush=True)
或者直接修改stdout的缓冲模式:
import sys # 开启行缓冲,每输出一行就自动flush sys.stdout.reconfigure(line_buffering=True)
补充说明
你看到的Terminal was not a tty日志属于非交互式运行环境的正常提示,和打印内容不输出的问题没有关联。
之前配置PYTHONUNBUFFERED=TRUE未生效,大概率是环境变量没有正确传递给locust进程,使用上述flush方案可以直接绕开环境变量配置的问题。
内容的提问来源于stack exchange,提问作者Guy
相关产品推荐
相关产品推荐

