在開發時本地環境使用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}
強制使用第一個子解釋器。