我目前正在開發一個Google App Engine(Python)項目,該項目主要使用Google Cloud SQL(使用SQL Alchemy)進行後端數據存儲。使用Google App Engine發揮SQL Alchemy
大多數情況下,一切正常。然而,偶爾「某些事情」會變得不合時宜,我們開始變得奇怪的例外。例如:
AttributeError的: 'COLUMNPROPERTY' 對象有沒有屬性 '戰略'
AttributeError的: 'RelationshipProperty' 對象有沒有屬性 '戰略'
我們認爲這可能與啓動新的GAE實例有關,但我們無法確定。
說了這麼多,我的問題是這樣的。我和我的團隊可以用什麼策略來追蹤這個問題?
請記住,該應用程序正在Google App Engine上運行,因此可能會限制我們的選項。
更新: Owen Nelson的下面的評論是正確的。 Google建議您添加threading.RLock
。但是我們仍然看到這個問題,但更少。
我想說清楚,到目前爲止,我們無法在本地環境中重現此問題。我們非常肯定這與動態實例的啓動有關,而這並非我們在開發過程中真正做到的。
如果有幫助,我們的應用程序建立在webapp2框架之上。 – Tombatron
我們一直在研究這個問題一段時間,我們已經縮小到實例初始化的問題。在關鍵應用程序初始化步驟中,根據google [遷移到python 2.7運行時指南](https://developers.google.com/appengine/docs/python/python25/migrate27#threadsafe)中的建議添加'threading.RLock()s' (比如按照嚴格的順序導入sqlalchemy聲明模型)似乎有助於*大部分時間*,但當新的實例啓動時,我們仍然會時常看到這些錯誤。真的很令人生氣。 –