2012-10-02 8 views
10

के माध्यम से एकाधिक इकाई समूहों के साथ लेनदेन चलाने में त्रुटि मैं Google App Engine ढांचे का उपयोग कर पायथन 2.7 के साथ एक एप्लिकेशन बना रहा हूं। मेरे आवेदन का परीक्षण करने के लिए मेरे पास कई परीक्षण हैं जो नाकेटे प्लगइन के उपयोग से नोजेट्स के माध्यम से चलाए जाते हैं। मैं उन्हें निम्न आदेश के साथ चलाएँ:नोसेटेट्स

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

अपने आवेदन के मॉडल परत में, मैं कई डेटाबेस कार्यों है कि एक ही लेन-देन के अंदर कई इकाई समूहों को प्रभावित चलाने की जरूरत है। मैं db पैकेज के run_in_transaction_options समारोह का उपयोग करके ऐसा करते हैं: https://developers.google.com/appengine/docs/python/datastore/functions#run_in_transaction

दुर्भाग्य से, जब मेरे परीक्षण स्वीट चल रहा है, मैं उन testcases कि इस तरह के लेन-देन करने की कोशिश में निम्न त्रुटि मिलती है:

BadRequestError: transactions on multiple entity groups only allowed with the High Replication datastore

मुझे नोसेटेट्स में कोई झंडा नहीं मिल रहा है जिससे एचआरडी को सक्षम करना संभव हो जाता है।

मुझे आश्चर्य है कि क्या एनएसडी चलाने से संभव है और अगर ऐसा है, तो इसे कैसे स्थापित किया जा सकता है?

उत्तर

16

मैं अत्यधिक सुझाव है कि आपडाटाबेस से NDB है, जहां आप cross group transactions उपयोग कर सकते हैं करने के लिए स्विच।

मानव संसाधन विकास अनुकरण करने के लिए, यदि आप अपने परीक्षण के setUp कार्य करने के लिए इस हिस्से में जोड़ सकते हैं, Writing High Replication Datastore tests से:

# 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)