Я только начал испытывать эту проблему. Я ничего не изменил, но внезапно кажется, что после выполнения задания после изменения значения значение не сохраняется, когда я позже просматриваю его в базе данных или делаю запрос в консоли. Но это происходит только ИНОГДА.Значения NDB 'put' не сохраняются?
Так у меня есть эта модель, как:
class User(IXBase, flask_security.UserMixin):
.....
current_challenge = ndb.IntegerProperty(default=1)
я добавил журналы в _post_put_hook и распечатать значения. Я вижу, ожидаемое значение есть (в данном случае 5 для current_challenge)
User(key=Key('User', '[email protected]'), active=True, created=datetime.datetime(2015, 7, 15, 2, 2, 25, 854790), current_challenge=5,
Однако, если я печатаю это значение, что я иногда вижу значение это было в ранее. (в этом случае я вижу 4). Но снова только иногда я вижу предыдущее значение, иногда оно увеличивается правильно, но, похоже, оно только что началось в последнее время, и из того, что я могу сказать, я ничего не изменил.
Так что, если я это сделаю, кажется, что это значение не сохраняется.
u = ndb.Key('User', '[email protected]').get()
print u.current_challenge
Любые мысли о том, как это может произойти? Я могу опубликовать больше кода.
Но это код отвечает за приращение вызова:
def increment_challenge(self, session):
self.current_challenge += 1
self.put()
return
Это вызывается, от конечной точки, как:
@blueprint.route('/upload_report', methods=['POST'])
@flask_security.roles_required('user')
def upload_session_report():
user = flask_login.current_user
updated_challenge = user.update_challenges()
Где update_challenges делают некоторые другие расчеты и цифры, если он должен вызвать increment challenge (который также является методом для пользователя)
Любая помощь будет замечательной!
я полагаю, вы уже знаете, что в конце концов датастор последовательны? если нет, это ваш ответ. –
Правильно, но он, кажется, никогда не синхронизируется. Даже через час значение все еще неверно. – Jonovono
Первое, что я хотел бы сделать, это получить ключ сущности, которую вы только что положили, и явно «получить» ее с помощью этого ключа. Если он будет удаленно извлечен, вы знаете, что теперь есть проблемы с вашими puts –