버그를 해결하려고합니다. 다음 함수는 tabs라는 사용자 속성에 Key 객체를 추가합니다. 어떤 이유로 사용자 엔터티에서 put()
을 호출 한 후 새로 추가 된 키가 저장되지 않습니다. 이유를 알아낼 수 없었습니다. 아마도 변경 사항이 즉시 나타나지 않도록 지연 될 수 있습니까? 이 경우 memcache 솔루션입니까?Datastore가 엔티티에 새 변경 사항을 저장하지 않습니다.
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
로컬 또는 서버에서 발생하는 것을보고 계십니까? 그리고 서버가 HRD라면? 서버에서 –
, 예, 복제가 높음 – Uri
이 경우 get()을 호출 할 때 put()이 모든 복제본에 쓰기를 완료하지 않을 가능성이 있습니다.이 경우 get()은 이전 값을 반환해야합니다. 잠시 후 다른 것을 실행하여 이것을 테스트 할 수 있습니다. 조금씩, 나중에 1 초가 지나면 말입니다. 이렇게하면 이전 데이터가 반환되는 중입니까? –