当前位置: 代码网 > 服务器>服务器>云虚拟主机 > 如何解决docker logs无法实时输出脚本打印的内容

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

2024年07月02日 云虚拟主机 我要评论
docker logs无法实时输出脚本打印内容背景&问题我在docker-compose.yml的command参数后面加入了一行运行python脚本的命令:command:python te

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等,需要重新配置下

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com