NDBタスクレットとyield
は、非同期/並列コードを実行するのに最適です。しかし、このメカニックがimages.get_serving_url_async()
のようなnon-ndb非同期関数で安全に使用できるかどうかは、ドキュメントからはっきりと分かりません。ndbタスクレット内でimages.get_serving_url_async()を使用しても安全ですか?
URLフェッチサービスは、独自の非同期要求のAPIを持っています
NDB Asynchronous Operation documentation pageは、それが記載されている
urlfetch_async()
、(強調鉱山)のNDBコンテキストの独自のバージョンを使用してについて非常に小さな部分を持っています。 NDBのタスクレットで使用するのは大丈夫ですが、いつも使いやすいとは限りません。
「常にNDBのタスクレットを使用することは容易ではない」である理由は私には非常に明確ではないが、これは、同じ文がimages.get_serving_url_async()
に適用されるなら、私は思ってしまいます。
私の質問は次のとおりです。これを行うと問題になるのですか?
@ndb.tasklet
def foo():
url = yield images.get_serving_url_async(image_key)
この拒否された機能要求によれば、 'get_serving_url_async()'によって返された返されたRPCオブジェクトを 'yield 'できるように見えます。 http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=151 –