使用新属性更新App Engine实体:数据存储区查看器中的新属性和值正常,但处理程序中没有

时间:2013-04-12 21:48:01

标签: python google-app-engine

我有一个旧模型QTip,我添加了一个新属性alink

class QTip(db.Model):
       # Old property that existed before
       tip_text = db.StringProperty(multiline=True)

       # Recently added this property and it's giving me trouble
       alink = db.StringProperty()

我创建了一个 QTip实体并填充了alink属性。像...这样的东西。

my_qtip.tip_text = 'Ranglers of the west'
my_qtip.alink = 'http://www.qtips.com/q/%s' % my_qtip.key()
my_qtip.put()

使用数据存储区查看器,我手动确认每个 QTip实体现在都具有alink属性的值。

当我获得QTip实体并尝试打印alink时。我一直没有。

 logging.error(my_qtip.tip_text)   # logs correct value
 logging.error(my_qtip.alink)      # logs 'None' as in None

我在dev_appserver.py和生产中收到相同的结果......我擦了数据存储区,我试图重命名属性,更改属性......没什么。

有人有任何见解吗?这应该是如此简单:/

编辑:解决并尴尬:

Flushing memcache解决了这个问题。 总是从memcache中拉出陈旧的结果

1 个答案:

答案 0 :(得分:0)

Flushing memcache解决了这个问题。总是从memcache中拉出陈旧的结果。

我是:

  • 创建实体
  • 将实体放入数据存储区
  • 将实体放入memcache
  • 在任务中 - 添加新的链接属性
  • 在请求处理程序中 - 检查实体是否在memacache中并使用memcached实体(过时)

eeek!