6

NDBタスクレットyieldは、非同期/並列コードを実行するための優れた方法です。ただし、このメカニズムを.などの非ndb非同期関数で安全に使用できるかどうかは、ドキュメントからは明確ではありませんimages.get_serving_url_async()

NDB非同期操作のドキュメントページには、NDBコンテキスト独自のバージョンのの使用に関する非常に小さなセクションがありますurlfetch_async()。ここには次のように記載されています(私の強調)。

URL Fetchサービスには、独自の非同期リクエストAPIがあります。それは問題ありませんが、NDBタスクレットで常に簡単に使用できるとは限りません

「NDBタスクレットで常に使いやすいとは限らない」理由は私にはよくわかりません。これは、同じステートメントがに当てはまるかどうか疑問に思いますimages.get_serving_url_async()

だから私の質問は:私がこれをすると私はトラブルに巻き込まれるでしょうか?

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

1 に答える 1

4

それは結構です。イールドはRPCを待機し、待機中に他のタスクレットを実行できるようにします。urlfetchに関するコメントは、その不器用なAPIに関するものでした。

于 2013-02-13T14:56:24.127 に答える