0

バグを解決しようとしています。次の関数は、タブと呼ばれるユーザーの属性に Key オブジェクトを追加します。何らかの理由でput()、ユーザー エンティティを呼び出した後、新しく追加されたキーが保存されません。理由がわかりませんでした。たぶん、変更がすぐに表示されないほどの遅延がありますか? その場合、memcache が解決策になりますか?

class User(GeoModel):
    tabs = db.ListProperty(db.Key)

@db.transactional
def add_tab_transaction(self, user_key, tab_key):
    user = models.User.get(user_key)
    user.tabs.append(tab_key)
    user.put()
    logging.debug('tabs this user has:')
    logging.debug(user.tabs) # prints the list with the new value
    user = models.User.get(user_key)
    logging.debug('rechecking the same thing:')
    logging.debug(user.tabs) # prints the list without the new value
4

1 に答える 1

0

この動作については、分離と一貫性で説明されています。

「トランザクションでは、すべての読み取りは、トランザクション開始時のデータストアの現在の一貫した状態を反映します。これには、トランザクション内の以前の書き込みと削除は含まれません。」

于 2012-05-27T18:56:42.050 に答える