我有一个关于App中任务架构的问题。
假设我有一个简单的任务:
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)我只有一个前端实例,其中许多任务同时运行。把它变成像这样的监听器有意义吗?
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?
发布于 2013-09-26 23:01:31
NDB为每个请求创建一个新的上下文,因此没有任何好处。
详细信息:-- ndb.toplevel和ndb.synctasklet --都创建了一个新的上下文(负责聚合RPC请求并将其批处理)。toplevel实际上是一个synctasklet,但它将创建一个新的上下文以供使用。
https://stackoverflow.com/questions/19035035
复制相似问题