在开发时本地环境使用import pandas as pd
一点问题也没有,当我把它部署上Apche+mod_wsgi后直接出现程序卡死,无法访问,也没有任何错误日志。
1-我将import pandas as pd
移动到使用的函数局部中,服务正常使用。第一次访问有稍微的卡顿,之后就不会。由于不知为何,就先用着吧
2 当版本迭代更新功能后,第一个问题时不时会出现。终于找到原因了:
pandas使用了numpy依赖,而numpy底层是c写的,这就是根本原因。
mod_wsgi
对于配置的每个virtual host
和app 挂载点都创建一个sub interpreter
。python中那个著名的GIL,在通过C 扩展访问时时,只有第一个sub interpreter
才可以正常工作,而使用其他的会导致死锁或CRASH.
【解决方案】
在Apache的host配置中加入以下代码:
WSGIApplicationGroup %{GLOBAL}
强制使用第一个子解释器。