2013-02-12 33 views
6

एनडीबी टास्कलेट और yield एसिंक/समांतर कोड करने का एक शानदार तरीका है। हालांकि, यह दस्तावेज़ीकरण से बिल्कुल स्पष्ट नहीं है अगर इस मेकनिज्म को images.get_serving_url_async() जैसे गैर-एनडीबी एसिंक कार्यों के साथ सुरक्षित रूप से उपयोग किया जा सकता है।क्या यह एक ndb टास्कलेट के अंदर images.get_serving_url_async() का उपयोग सुरक्षित है?

URL लाएँ सेवा का स्वयं का अतुल्यकालिक अनुरोध एपीआई है:

NDB Asynchronous Operation documentation pageurlfetch_async(), जहां यह कहा गया है (जोर मेरा) की NDB संदर्भ के अपने संस्करण का उपयोग कर के बारे में बहुत छोटे खंड है। यह ठीक है, लेकिन एनडीबी टास्कलेट के साथ उपयोग करना हमेशा आसान नहीं होता है।

यह कारण है कि यह "हमेशा NDB tasklets साथ उपयोग करने के लिए आसान नहीं है" मेरे लिए काफी स्पष्ट नहीं है, और यह मुझे आश्चर्य है कि अगर एक ही बयान images.get_serving_url_async() पर लागू होता है बनाता है।

तो मेरा सवाल है: यदि मैं ऐसा करता हूं तो क्या मुझे परेशानी होगी?

@ndb.tasklet 
def foo(): 
    url = yield images.get_serving_url_async(image_key) 
+0

इस अस्वीकृत फीचर अनुरोध के मुताबिक, ऐसा लगता है कि मैं 'get_serving_url_async()' द्वारा लौटाई गई आरपीसी ऑब्जेक्ट को 'उपज' कर सकता हूं। http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=151 –

उत्तर

4

यह ठीक है। उपज आरपीसी के लिए इंतजार करेगी और प्रतीक्षा करते समय अन्य टास्कलेट चलाने की अनुमति देगी। Urlfetch के बारे में टिप्पणी बस इसके बेकार एपीआई के बारे में था।