2013-02-12 26 views
6

NDB görevleri ve yield, uyumsuz/paralel kod yapmak için harika bir yoldur. Bununla birlikte, bu mecanizmin, images.get_serving_url_async() gibi ndb olmayan eşzamanlı işlevlerle güvenli bir şekilde kullanılabiliyor olması dokümantasyondan oldukça açık değildir.ndb görevinin içinde images.get_serving_url_async() kullanmak güvenli midir?

URL Getirme hizmetinin kendi asenkron isteği API vardır:

NDB Asynchronous Operation documentation page o belirtilmektedir urlfetch_async(), (vurgu benim) ait NDB bağlamda kendi versiyonunu kullanma konusunda çok küçük bir bölümü vardır. Tamam, ancak NDB görevlileri ile her zaman kullanımı kolay değildir.

O "her zaman NDB Tasklets ile kullanımı kolay değildir" neden bana oldukça açık değildir ve bu aynı deyimi images.get_serving_url_async() için geçerli olup olmadığını merak etmeme sebep olur.

Bu yüzden sorum şu: eğer bunu yaparsam başım belaya girer mi?

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

Bu reddedilen özellik isteğine göre, get_serving_url_async() 'tarafından döndürülen iade edilen RPC nesnesini yalnızca verimsiz gibi gösterebilirim. http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=151 –

cevap

4

Bu iyi. Verim, RPC'yi bekleyecek ve diğer görevlilerin beklerken çalışmasına izin verecektir. Urlfetch ile ilgili yorum sadece onun beceriksiz API hakkındaydı.

İlgili konular