GAE: столкновение транзакции с хранилищем данных. Повторная попытка ... происходит часто - PullRequest
0 голосов
/ 01 мая 2020

Я использую GAE Python 2.7 Standard с хранилищем данных.

Проблема в том, что хранилище данных слишком часто вызывает коллизии транзакций.

Я написал простой тестовый код. (Я знаю, что такого кода не существует. Это всего лишь тестовый код.)
Я просто обновляю одну сущность в транзакции несколько раз.

Я не думаю, что что-либо может столкнуться, поскольку Я просто обновляю тот же объект расписания.

Но, глядя на ведение журнала, "Коллизия транзакции. Повторная попытка ..." происходит несколько раз.

По какой причине хранилище данных вызывает коллизию транзакции ?

from google.appengine.ext import db

# get any entity
schedule = Schedule.get('entity_key')

def _txn(schedule):
    schedule.save()
    schedule.save()
    schedule.save()
    schedule.save()
xg_on = db.create_transaction_options(xg=True)
for i in range(0, 100):
    logging.info(i)
    db.run_in_transaction_options(xg_on,
                                  _txn,
                                  schedule)

1 Ответ

2 голосов
/ 01 мая 2020

Эта ошибка возникает, когда вы пытаетесь обновить объект более одного раза в секунду, это может привести к проблемам с задержкой, тайм-аутам и другим типам ошибок.

Вы можете ознакомиться с рекомендациями для хранилища данных здесь и посмотреть, как предотвратить подобные ошибки в будущем.

...