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