在ndb tasklet中使用images.get_serving_url_async()是否安全?

时间:2013-02-12 16:51:28

标签: google-app-engine app-engine-ndb

NDB tasklet和yield是执行异步/并行代码的好方法。但是,从文档中可以清楚地看出,这种机制是否可以安全地与非{n}异步函数一起使用,例如images.get_serving_url_async()

NDB Asynchronous Operation documentation page有一个非常小的部分,关于使用NDB上下文自己的urlfetch_async()版本,在那里陈述(强调我的):

  

URL Fetch服务有自己的异步请求API。 这很好,但并不总是很容易使用NDB tasklet

我不太清楚为什么“并不总是很容易使用NDB tasklets”,这让我想知道相同的陈述是否适用于images.get_serving_url_async()

所以我的问题是:如果我这样做,我会遇到麻烦吗?

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

1 个答案:

答案 0 :(得分:4)

很好。 yield将等待RPC并允许其他tasklet在等待时运行。关于urlfetch的评论只是关于它笨拙的API。