如何在本地开发计算机上模拟(Google App Engine)高复制数据存储?

时间:2012-03-27 10:14:49

标签: google-app-engine google-cloud-datastore

我有一个Django应用程序,我正在尝试在多种类型的实体组上执行事务。当我尝试在我的本地开发机器上测试时,我收到此错误:

  

ERROR 2012-03-27 10:11:12,971 datastore.py:2480]异常发送   回滚:回溯(最近一次调用最后一次):文件   “/usr/local/google_appengine/google/appengine/api/datastore.py”,一行   2475,在_DoOneTry文件中   “/usr/local/google_appengine/google/appengine/datastore/datastore_rpc.py”   1984年,在回滚文件中   “/usr/local/google_appengine/google/appengine/datastore/datastore_rpc.py”   1999年,在async_rollback文件中   “/usr/local/google_appengine/google/appengine/datastore/datastore_rpc.py”   第1928行,在_end_transaction文件中   “/usr/local/google_appengine/google/appengine/datastore/datastore_rpc.py”   第1883行,在事务文件中   “/usr/local/google_appengine/google/appengine/api/apiproxy_stub_map.py”   第592行,在get_result文件中   “/usr/local/google_appengine/google/appengine/datastore/datastore_rpc.py”   第1670行,在__begin_transaction_hook文件中   “/usr/local/google_appengine/google/appengine/datastore/datastore_rpc.py”   第1184行,在check_rpc_success BadRequestError:上的交易   多个实体组仅允许使用High Replication   数据存储

最好的解决方法是什么?

2 个答案:

答案 0 :(得分:23)

从命令行启动Google App Engine时使用--high_replication。例如:

python /usr/local/bin/dev_appserver.py --datastore_path=/tmp/datastore app --port=9999 --high_replication

答案 1 :(得分:2)

文档引用了这个:https://cloud.google.com/appengine/docs/python/tools/localunittesting#Python_Writing_High_Replication_Datastore_tests

简而言之,在数据存储区存根上设置策略就可以了。

self.policy = datastore_stub_util.PseudoRandomHRConsistencyPolicy(probability=0)
self.testbed.init_datastore_v3_stub(consistency_policy=self.policy)