首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步任务

异步任务
EN

Stack Overflow用户
提问于 2013-09-26 17:43:45
回答 1查看 68关注 0票数 0

我有一个关于App中任务架构的问题。

假设我有一个简单的任务:

代码语言:javascript
复制
class MyTask(webapp2.RequestHandler):
    def post(self):
        k = ndb.Key(urlsafe=self.request.get('key'))
        entities = Model.query(ancestor=k).fetch(100)
        for entity in entities:
            entity.something = True
        ndb.put_multi(entities)

我只有一个前端实例,其中许多任务同时运行。把它变成像这样的监听器有意义吗?

代码语言:javascript
复制
class MyTask(webapp2.RequestHandler):
    @ndb.synctasklet
    def post(self):
        k = ndb.Key(urlsafe=self.request.get('key'))
        entities = yield Model.query(ancestor=k).fetch_async(100)
        for entity in entities:
            entity.something = True
        yield ndb.put_multi_async(entities)

这是否可能允许收集RPC并将它们分批发送出去?或者它会像同步版本一样快速运行,阻塞每个RPC?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-26 23:01:31

NDB为每个请求创建一个新的上下文,因此没有任何好处。

详细信息:-- ndb.toplevelndb.synctasklet --都创建了一个新的上下文(负责聚合RPC请求并将其批处理)。toplevel实际上是一个synctasklet,但它将创建一个新的上下文以供使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19035035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档