के साथ इकाइयों के बैच को प्राप्त करने, संशोधित करने और रखने का सबसे प्रभावी तरीका मेरे पास कुछ बैच ऑपरेशंस हैं जो मैं करता हूं। दुर्भाग्य से यह कभी-कभी 400-500 इकाइयों को अपडेट करने के लिए हमेशा के लिए लेता है। मेरे पास सभी इकाई कुंजी हैं, मुझे उन्हें प्राप्त करने, संपत्ति अपडेट करने और उन्हें डेटास्टोर में सहेजने और उन्हें बचाने में 40-50 सेकंड तक लग सकते हैं जो मैं नहीं ढूंढ रहा हूं।मेरे ऐप में ndb
बीमार अपने मॉडल को आसान बनाने में समझाने के लिए मुझे क्या करना है (जो वैसे भी बहुत सरल है):
class Entity(ndb.Model):
title = ndb.StringProperty()
keys = [key1, key2, key3, key4, ..., key500]
entities = ndb.get_multi(keys)
for e in entities:
e.title = 'the new title'
ndb.put_multi(entities)
हो रही है और बदलाव भी अधिक समय नहीं लगता। मैंने get_async को एक टास्कलेट में प्राप्त करने का प्रयास किया और जो भी संभव हो, जो केवल तभी बदलता है जब फोरलोप अधिक समय लेता है।
लेकिन क्या वास्तव में मुझे परेशान करती है कि एक निराली 50seconds तक का समय लगता है ...
समय की एक सभ्य राशि में इस आपरेशन (रों) करने के लिए सबसे कारगर तरीका है क्या। बेशक मुझे पता है कि यह इकाई की जटिलता जैसे कई कारकों पर निर्भर करता है लेकिन जो समय लगता है वह वास्तव में स्वीकार्य सीमा से अधिक है।
मैंने पहले ही एसिंक ऑपरेशंस, टास्कलेट्स की कोशिश की है ...
सभी इकाइयां एक ही इकाई में हैं समूह और कुछ परीक्षणों के बाद मुझे यह कहना है कि इकाइयों को एक स्थगित कार्य में 50 से बैचिंग करने के लिए एक टास्कलेट का उपयोग करना इस ऑपरेशन को बहुत तेज बनाता है। मैं पूर्ण अपडेट के लिए 5-10 सेकेंड के बारे में बात कर रहा हूं जो अभी भी मेरे मन में नहीं है लेकिन 50 सेकंड से काफी बेहतर है। – aschmid00
मुझे यह आश्चर्यजनक लगता है, अगर वे सभी एक ही समूह में हैं, तो अलग-अलग बैच नहीं होने पर आपको लगभग 1 लिखने/दूसरे/समूह की सीमा तक पहुंचने में मदद मिलेगी? – Alexis
1 बैच/दूसरा लगता है कि वह क्या प्राप्त कर रहा है ... –