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 @ 2022-06-10 14:19  平行时空的旅者  阅读(1062)  评论(0编辑  收藏  举报