使用Google App Engine使SQL Alchemy发挥出色

时间:2012-11-14 01:27:42

标签: python google-app-engine sqlalchemy

我目前正在开发一个Google App Engine(Python)项目,该项目主要使用Google Cloud SQL(带有SQL Alchemy)进行后端数据存储。

大部分时间一切都运作良好。然而,偶尔“某事”会变得混乱,我们开始得到奇怪的例外。例如:

  • AttributeError:'ColumnProperty'对象没有属性'策略'

  • AttributeError:'RelationshipProperty'对象没有属性'策略'

我们认为这可能与新GAE实例的启动有关,但我们无法确定。

尽管如此,我的问题是这个。我的团队和我可以用什么策略来追踪这个问题?

请注意,该应用程序正在Google App Engine上运行,因此可能会限制我们的选项。

更新:Owen Nelson的评论如下。我们已根据Google的建议添加了threading.RLock。但是,我们仍然看到这个问题,但更不常见。

我想清楚,到目前为止,我们无法在本地环境中重现此问题。我们非常确定这与动态实例的启动有关,这不是我们在开发中真正可以做的事情。

1 个答案:

答案 0 :(得分:1)

据我所知,您的应用程序仅在生产模式下出现问题。

尝试在开发模式下重现错误

最好的解决方案是能够在开发模式下重现该错误。为此,您可以尝试使用大量数据运行一批unittest。 (见how to do local test on appengine)。

如果那不起作用......

启用appstats以获取有关处理程序的更多信息

您可以启用appstats以尝试获取有关哪个处理程序当前导致问题的信息。 Appstats通常会向您提供有关数据存储的信息,这与我们的情况无关,但您可以从一般请求中获取信息(例如响应时间)

识别处理程序并将其包装在漂亮的try catch

一旦确定问题的根源或引发问题的位置,您可以使用try..catch将其包围起来。通过它,您可以获得有关当前执行跟踪的更多信息,并希望能够解决您的问题

相关问题