解决docker logs无法实时输出脚本打印内容的方法

AI 概述
问题解决docker logs 不打印 python 程序输出 本笔记主要是记录解决 docker logs 无法实时输出脚本打印内容的方法,个人经验总结,希望对大家有参考价值。 问题 问题源于我在 docker-compose.yml 的 command 参数后面加入了一行运行 python 脚本的命令: command:python test.py 那么这条命令会在 co...
目录
文章目录隐藏
  1. 问题
  2. 解决
  3. docker logs 不打印 python 程序输出

解决 docker logs 无法实时输出脚本打印内容的方法

本笔记主要是记录解决 docker logs 无法实时输出脚本打印内容的方法,个人经验总结,希望对大家有参考价值。

问题

问题源于我在 docker-compose.yml 的 command 参数后面加入了一行运行 python 脚本的命令:

command:python test.py

那么这条命令会在 container 生成的时候就开始运行。

但是通过docker logs -f命令来查看日志时,我发现 py 脚本里通过 print 打印出来的东西并不会实时显示出来,而是程序执行完了才会显示出来,这并不是我想要的结果。

但如果进入 container 手动执行 python 脚本,就可以实时打印出来。

解决

在网上查找资料之后发现,在这种情况下,python 会默认缓冲其输出,所以想要无缓冲输出,那么加一个-u参数即可:

command: python -u test.py

这个时候再通过docker logs -f来查看日志时,你就会看到实时打印出来的结果。

问题解决!

docker logs 不打印 python 程序输出

docker logs --tail 50 --follow a8

即使容器在正常运行,也不会有输出打印出来,等也没用,且不定时的会打印一两次,最后才发现,原来是 python 的 IO 有缓冲,stdout 堵住了导致了

只需在 python 代码中修改 print(flush=True)即可,如果是用的 gunicorn 或者 logging 等,需要重新配置下。

以上关于解决docker logs无法实时输出脚本打印内容的方法的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

1

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 解决docker logs无法实时输出脚本打印内容的方法

发表回复