我运行一个小型视频游戏。每个玩家都有一个具有各种属性的帐户模型。
我最近添加了一个 TextProperty 来跟踪玩家徽章。这些只是在授予时附加到 account.badges 属性的 ASCII 字符。
因为正确是新的,所以大多数帐户模型都没有这个属性。在整个网站的大约 3 个地方,我有一些看起来像这样的代码
if not player.badges:
player.badges = ""
player.badges += "A"
player.put_memcache()
player.put()
出于某种原因,其中一个玩家徽章不断重置为“”(空字符串)。我一生都无法弄清楚如何或为什么。
我以前没有使用过 TextProperties。是否有一些我不明白的奇怪行为?
TextProperties 不能很好地与内存缓存配合使用吗?
该帐户未重置为某些旧状态,因为其他属性似乎正在正确存储值。它只是这一个TextProperty。
无论如何,我很困惑,并希望有一些新的想法可以帮助我找出问题所在。
问题解答
徽章属性就是这样定义的
class Account(db.Model):
badges = db.TextProperty()
email = db.StringProperty()
alias = db.StringProperty()
avatar = db.IntegerProperty()
put_memchche 只是 memcache 集的包装器。
def put_memchche(self):
memcache.set("account" + self.key().name(), self)