问题描述
使用pyinstaller打包python代码命令
python -m PyInstaller -i logo.ico -F -p ./console -n scl_runner ./main.py
运行之后会有一个终端,可以看到终端日志输出正常,多次远程调用也没有问题,死循环测试调用10万次也没有卡死
然而,某一天莫名的接口调不通了,终端也没有任何输出,想不通,只好重启,然后好了,
等下次吧,接下来就是
重启。。。
重启。。。
重启。。。
找不到规律,不能复现
问题复现
直到今天正对着屏幕发呆时,顺手点了一下屏幕,神奇的一幕出现了
屏幕输出一大堆日志,竟然是几天前的调用,响应却是刚刚,
然后我才意识到是终端阻塞了,试了好几次发现了规律,每当我点击终端界面的时候点击位置出现白色方块,此时服务为阻塞状态
然后按个ESC或回车,白色块消失,日志正常打印,阻塞消失
问题分析
通过上面可以推断,终端上的点击导致控制台处于某种不能输出打印的状态,而导致python的日志打印被阻塞,进而导致所有有打印的接口都被阻塞。
进一步查询了解到这是因为windows的cmd默认开启了“快速编辑模式”,只要当鼠标点击cmd任何区域时,就自动进入了编辑模式,之后的程序向控制台输入内容甚至后台的程序都会被阻塞。
解决方案
- 临时方案:输入回车或Esc解除阻塞,之后避免点到终端
- 半永久:
标题栏右键-属性,取消快速编辑模式
勾选,然后点确定
即可
- 永久
上面的只对当前窗口有用,新建的窗口依然是处于快速编辑模式,如果想永久生效需要通过修改默认值方式,步骤如下:- 标题栏右键-默认值
- 取消
快速编辑模式
勾选, - 然后点
确定
即可