0

我的 App Engine 数据存储区遇到了一个严重问题,它似乎完全不受调试的影响:我无法在构建实体后对其进行修改。

从 app.yaml 中定义的控制台工作时甚至会出现问题,该控制台不与我的主应用程序共享任何代码。这是控制台中的一个示例:

>>> foo = Topic(name='bar')

>>> foo.name

'bar'

>>> foo.name = 'foo'

>>> foo.name

'bar'

这种相同的行为会影响应用程序中的所有实体类型和所有属性。实体是否已保存无关紧要。

我尝试从几天、几周和几个月前恢复到转速,但问题仍然存在,尽管如果它实际上是在几周和几个月前,我肯定会注意到它,因为它破坏了应用程序逻辑。它存在于运行 Ubuntu 和 OSX 的不同机器上,它也存在于生产中的所有应用程序版本中,并且它存在于我测试过的至少一个其他应用程序中。在擦除我的 SDK 数据存储、使用不同的端口、刷新我的内存缓存和任务队列、重新安装 SDK 以及我在绝望中能想到的所有其他调试技巧之后,它仍然存在。

一个不受影响的地方是管理控制台。相同的代码序列得到修改实体的预期结果。即使在我导入了我能想到的每个模块或类之后,这可能会造成麻烦,控制台仍然总是按预期工作。另一个迹象表明我的代码中没有任何东西导致这个问题(而且我不会完全发疯)。

我相当肯定,就在几天前,我可以在我的应用程序中修改实体,就像在管理控制台中一样。毕竟,不可变实体不是很有用。

一些建议将非常非常感谢。我担心这个问题会阻止我继续开发,直到我能解决它。

4

2 回答 2

1

你使用什么样的控制台?如果它来自 shell.appspot.com 或类似的,很可能是控制台在每个>>>提示符下保存和恢复全局变量导致这些痛苦。

如果您使用交互式控制台/_ah/admin/interactive(默认情况下在 dev_appserver.py 中启用),请尝试将所有相关代码放入输入窗口并一举执行;这将防止任何保存/恢复行为妨碍您的实验。

于 2009-10-14T17:37:15.167 回答
0

这可能是一个愚蠢的问题,但你是在修改实体后调用 .put() 吗?我无法从您的代码示例中真正分辨出您在设置后对属性的后续获取是否应该在同一个会话或另一个会话中。

另外,您能否粘贴相关的模型定义?并告诉我们您是否正在使用任何可能会干扰您的模型的 App-Engine 特定库。

于 2009-08-23T12:15:42.890 回答