Jupyter 并发测试以后出现EOFError: marshal data too short
背景
由于项目需求需要用户能进行网页在线运行python代码程序,调研后决定使用Jupyter
的服务接口实现此功能,目前使用docker
进行容器化部署,测试针对次服务进行并发测试。测试并发过程中,导致kernels
已经达到顶峰值,然后我暴力关掉所有的kernels以后,再进行使用的时候,出现EOFError: marshal data too short
现象
分析与解决方案
通过异常日志分析,查到这篇文章https://stackoverflow.com/questions/50391941/eoferror-marshal-data-too-short说是要pyc文件损坏,需要删除__pycache__
文件夹下的文件。
从日志分析需要删除ipykernel
、IPython
、jedi
下的缓存文件,使用一下命令查询并删除
find /usr/local/lib/python3.11/dist-packages/ipykernel -name __pycache__ | grep IPython -exec rm -r {} +
删除完后发现还是解决不了问题。最后想了一个暴力的解决方案,直接删除dist-packages
s 目录下的所有的__pycache__
文件夹。
find . -type d -name "__pycache__" -exec rm -r {} +
再尝试运行一下,完美解决问题!