mod_wsgi + pymssql訪問SQL Server阻塞

在通過pymssql訪問SQL Server時,直接在python中運行沒有問題,在通過mod_wsgi和Apache進行部署時,發現所有請求都hang再數據庫查詢。

通過google查到了答案,感謝google,詳細描述請見:https://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API

簡要說一下,mod_wsgi針對每個virtual host和app mount point創建一個sub interpreter。python中有個著名的GIL,在通過C extension訪問GIL State時,只有第一個sub interpreter纔可以正常工作,如果使用後續的sub interpreter會導致死鎖或crash,因爲pymssql是一個C extension所以會有這個問題,解決方案是,添加配置項:

WSGIApplicationGroup %{GLOBAL}

強制該app使用第一個sub interpreter,使得GIL正常工作。改完後,mod_wsgi一切ok。


發佈了119 篇原創文章 · 獲贊 69 · 訪問量 126萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章