发布于 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
复制相似问题