我正在使用ndb编写一个分析模型,该模型记录每个应用程序请求的一些数据.每个请求都通过ndb.put_async调用ndb请求来记录数据,而客户端不关心结果.本质上,我不希望应用程序请求等待保存统计数据以进行性能分析.
但是,我对官方文档中的解释感到困惑.如果在ndb请求完成之前应用程序请求已完成,那么是否仍能保证ndb请求完成?文件表明
如果请求处理程序过早存在,那么put可能永远不会发生
这会发生什么标准?这是否意味着无论用户是否关心结果,都需要调用future.get_result,以确保执行ndb请求?
原始文档(https://developers.google.com/appengine/docs/python/ndb/async)说:
在这个例子中,调用future.get_result有点傻:应用程序从不使用NDB的结果.该代码就在那里,以确保请求处理程序在NDB完成之前不会退出; 如果请求处理程序过早退出,则put可能永远不会发生.为方便起见,您可以使用@ ndb.toplevel修饰请求处理程序.这告诉处理程序在异步请求完成之前不要退出.这反过来让您发送请求,而不用担心结果.
如果在ndb请求完成之前应用程序请求已完成,那么是否仍能保证ndb请求完成?
没有.
这是否意味着无论用户是否关心结果,都需要调用future.get_result,以确保执行ndb请求?
基本上是的,但您可以使用ndb.toplevel装饰器以方便,这样您就不必显式等待结果.那就是说,我认为这不是你想要的.
可能是taskqueue你想要的.请检查一下.
| 归档时间: |
|
| 查看次数: |
673 次 |
| 最近记录: |