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)