nohup后台挂起django程序print内容不显示到log文件中解决方案
部署Django程序的时候可以用python3 manage.py runserver XXX.XXX.XX.X:8001 来启动程序。但是这样的话当前会话就被占用了不能干其他事了。
于是采用nohup的方法在后台运行,nohup的参数说明可以参考这里
nohup python3 manage.py runserver XXX.XXX.XX.X:8001 >./djo.out 2>&1 &
这样的话发现代码里面的print的内容不在djo.out里面显示。
从网上发现的解决方法是在命令行中增加 -u参数,python命令加上-u(unbuffered)参数后会强制其标准输出不通过缓存直接打印到屏幕。即启动命令修改为:
nohup python3 -u manage.py runserver XXX.XXX.XX.X:8001 >./djo.out 2>&1 &
我尝试后发现没有解决我的问题。print内容还是没有成功显示。
最后,我采用了重写print的方法,代码的输出都调用print_ 这个方法。(这个方法可以解决问题)
1 def print_(*value): 2 print(*value, sep=' ', end='\n', file=None, flush=True)
Ps:flush=True 就是立刻刷新缓存区。这样就会打印出来
以后这种类似项目还是采用log的形式来输出信息吧。
老铁,如果觉得本文对你有帮助,麻烦帮点个右下角的“推荐”,感谢!
本文来自博客园,作者:平行时空的旅者,转载请注明原文链接:https://www.cnblogs.com/yifengyu/p/16363082.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下