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