pyc文件生成错误(2019-01)

pyc文件生成错误(2019-01),第1张

线上突然出问题,访问全部报错。

定位过程:

1.看日志很奇怪,全部是import error,但是包全部安装了。

2.看监控及机器异常,看到文件句柄有突增

3.访问量突增,导致进程数变多,加载文件变多。然后看一下pyc文件,发现都非常小。生成的pyc文件有问题。

pyc.error是备份的错误文件。

原因:

编译器在读一个.py文件时,一旦遇到I/O异常,会得到一个EOF的标志,然后以它所读取的内容编译生成.pyc文件,但这个过程并没有检查I/O异常

。这个问题python3中做了修复,但是python2还是有可能有问题。I/O异常是因为突然访问量增加,瞬间启动了很多进程,虚拟机资源不够用。

参考 https://bugs.python.org/issue25083

修复:

1.不生成pyc文件,sys.dont_write_bytecode = True;

测试了一下,内部系统这个速度基本没影响

2.限制住启动进程个数;之前没做限制,没想到被人扫了

3.限流,接入层做限流

命令行输入:python-mpy_compilemyFile.py就可以生成对应的pyc文件了。之后就可以直接执行pyc文件。pythonmyFile.pyc。

python的pyc文件是一种二进制文件,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。

由于python程序的py文件很容易泄露源代码,所以python可以编译成保密的pyc文件。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11719688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存