डैनियल सही है, लेकिन यदि आप नक्शाकार साथ गंदगी नहीं करना चाहता, कि तुम यह कर सकते हैं अपने अनुप्रयोग के लिए एक और पुस्तकालय को जोड़ने के लिए deferred library कि एसडीके 1.2 के बाद से शामिल किया गया है का उपयोग कर Task Queues या और भी आसान का उपयोग कर की आवश्यकता है .3।
20.000 इकाइयां यह नाटकीय नहीं है और मुझे लगता है कि यह कार्य नियमित आधार पर नहीं किया जा रहा है (लेकिन अगर ऐसा होता है, तो यह संभव है)।
यहाँ एक उदाहरण NDB का उपयोग कर और आस्थगित पुस्तकालय (आप आसानी से कर सकते डीबी का उपयोग कर, लेकिन अगर आप पहले से ही इसे प्रयोग नहीं कर रहे हैं वैसे भी NDB को बदलने पर विचार हैं) है। यह एक सुंदर सीधे आगे रास्ता है, लेकिन समय समाप्ति के बारे में ज्यादा देखभाल के बिना:
def update_model(limit=1000):
more_cursor = None
more = True
while more:
model_dbs, more_cursor, more = Model.query().fetch_page(limit, start_cursor=more_cursor)
for model_db in model_dbs:
model_db.updated = True
ndb.put_multi(model_dbs)
logging.info('### %d entities were updated' % len(model_dbs))
class UpdateModelHandler(webapp2.RequestHandler):
def get(self):
deferred.defer(update_model, _queue='queue')
self.response.headers['Content-Type'] = 'text/html'
self.response.out.write('The task has been started!')
मैं वास्तव में पहले से ही ऐसा pipelining इन आपरेशनों में एक अच्छा विचार की तरह लग MapReduce ढांचे का उपयोग कर रहा हूँ। मेरी चिंता है कि कई समान एकल() संचालन समानांतर में चल रहे हैं। प्रदर्शन मुद्दे से परे मैं डेटास्टोर टाइमआउट के बारे में चिंतित हूं क्योंकि कई संस्थाएं इकाई समूह साझा करती हैं। क्या पाइपलाइन के लिए वैसे भी है और अभी भी कुल डाल() एस है? –
नक्शा-कम एपीआई एक उत्परिवर्तन पूल के माध्यम से बैच डेटास्टोर संचालन के लिए अनुमति देता है। http://code.google.com/p/appengine-mapreduce/wiki/GettingStartedInPython –