Подтвердить что ты не робот

Ошибка при запуске транзакции с несколькими группами объектов через носетиты

Я создаю приложение с Python 2.7 с помощью платформы Google App Engine. Чтобы протестировать мое приложение, у меня есть несколько тестов, которые запускаются через носетиты, используя плагин для носа. Я запускаю их со следующей командой:

nosetests --with-gae --gae-lib-root=/usr/local/google_appengine/ -w . -w */test/ -v

В слое модели моего приложения мне нужно запустить несколько операций с базой данных, которые влияют на несколько групп сущностей внутри одной транзакции. Я делаю это, используя функцию run_in_transaction_options пакета db: https://developers.google.com/appengine/docs/python/datastore/functions#run_in_transaction

К сожалению, при запуске моих тестовых наборов я получаю следующую ошибку в тех тестовых сценариях, которые пытаются выполнить такую ​​транзакцию:

BadRequestError: транзакции только для нескольких групп объектов разрешены с хранилищем данных с высокой репликацией

Я не могу найти флаг в nosetests, который позволяет включить HRD.

Мне интересно, возможно ли вообще запустить HRD из nosetests, и если да, то как его можно настроить?

4b9b3361

Ответ 1

Я бы предложил вам перейти с db на ndb, где вы можете использовать cross group сделки.

Чтобы смоделировать HRD, вы можете добавить эту часть в функцию setUp ваших тестов, от Написание тестов хранилища данных высокой репликации:

# Create a consistency policy that will simulate the High Replication consistency model.
self.policy = datastore_stub_util.PseudoRandomHRConsistencyPolicy(probability=0)

# Initialize the datastore stub with this policy.
self.testbed.init_datastore_v3_stub(consistency_policy=self.policy)