4

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

大多数时候,一切都运行良好。但是,有时“某事”会出问题,我们开始遇到奇怪的异常。例如:

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

  • AttributeError:“RelationshipProperty”对象没有属性“strategy”

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

说了这么多,我的问题是这个。我和我的团队可以使用哪些策略来追踪此问题?

请记住,该应用程序正在 Google App Engine 上运行,因此可能会稍微限制我们的选择。

更新:欧文尼尔森下面的评论是正确的。我们已threading.RLock按照 Google 的建议添加。然而,我们仍然会看到这个问题,但频率要低得多。

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

4

1 回答 1

1

据我了解,您的应用程序仅在生产模式下存在问题。

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

最好的解决方案是能够在开发模式下重现该错误。为此,您可以尝试使用大量数据运行一批单元测试。(查看如何在 appengine 上进行本地测试)。

如果这不起作用...

打开 appstats 以获取有关处理程序的更多信息

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

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

一旦您确定了问题的根源或问题的来源,您可以用 try..catch. 将其包围。这样您可以获得有关当前执行 Trace 的更多信息,并有望解决您的问题

于 2012-12-06T23:38:09.730 回答