来自文档
NDB任务线程是一段可以与其他代码同时运行的代码。如果您编写了一个tasklet,您的应用程序就可以使用它,就像它使用一个异步NDB函数一样:它调用tasklet,它返回一个未来;稍后,调用未来的get_result()方法得到结果。
这份文件中的解释和例子对我来说真的很神奇。我可以使用它,但很难正确理解它。
例如:
发布于 2013-04-06 18:32:49
如果您查看未来的实现,它非常类似于python中的生成器。实际上,它使用相同的yield关键字来实现它所说的功能。请阅读关于tasklets.py的简介以获得一些澄清。
当您使用@tasklet装饰符时,它会创建一个未来,并在包装函数上等待一个值。如果该值是一个生成器,它将将未来添加到事件循环中。当您对未来进行yield时,事件循环会遍历所有排队的期货,直到您想要的未来做好准备。这里的并发性是,每个未来都将执行其代码,直到返回(使用raise ndb.Return(...)或函数完成)、抛出异常或再次使用yield为止。我想,从技术上讲,您可以在代码中使用yield来停止执行该函数,以便让事件循环继续运行其他的期货,但我认为这不会有太大帮助,除非您真的有一个聪明的用例。
回答你的问题:
yield。通常,在GAE中,它会一直工作到RPC调用。https://stackoverflow.com/questions/15801523
复制相似问题