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的形式来输出信息吧。

posted @   平行时空的旅者  阅读(1153)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示