【发布时间】:2012-11-14 01:27:42
【问题描述】:
我目前正在开发一个 Google App Engine (Python) 项目,该项目主要使用 Google Cloud SQL(使用 SQL Alchemy)进行后端数据存储。
大多数时候一切都运行良好。然而,偶尔“某事”会出问题,我们开始遇到奇怪的例外情况。例如:
AttributeError: 'ColumnProperty' 对象没有属性 'strategy'
AttributeError: 'RelationshipProperty' 对象没有属性 'strategy'
我们认为这可能与新 GAE 实例的启动有关,但我们不能确定。
说了这么多,我的问题是这个。我和我的团队可以使用哪些策略来追踪此问题?
请记住,该应用程序在 Google App Engine 上运行,因此可能会稍微限制我们的选择。
更新: Owen Nelson 下面的评论是正确的。我们已按照 Google 的建议添加了 threading.RLock。然而,我们仍然会看到这个问题,但频率要低得多。
我想明确一点,到目前为止,我们无法在本地环境中重现此问题。我们很确定这与动态实例旋转有关,这不是我们在开发中真正可以做的事情。
【问题讨论】:
-
如果有帮助,我们的应用程序将构建在 webapp2 框架之上。
-
我们已经研究这个问题一段时间了,我们已经将其缩小到实例初始化的问题。按照 google 的 migrating to the python 2.7 runtime guide 中关于关键应用程序初始化步骤的建议(例如以严格的顺序导入 sqlalchemy 声明性模型)添加
threading.RLock()s似乎有助于大部分时间,但我们仍然看到这些错误来自不时启动新实例。真的很气人。
标签: python google-app-engine sqlalchemy