优化 v2 API 中的驱动加载

https://storyboard.openstack.org/#!/story/2006654

问题描述

目前,所需的驱动程序是在 v2 API 资源的 __init__ 方法中加载的。然而,flask_restful每个请求 上实例化资源,这意味着驱动程序也在每个请求上加载。这导致了次优的性能。

提议的变更

cloudkitty.api.v2.base.BaseResource 中实现两个新的类方法

  • reload:重新加载所有必需的驱动程序。

  • load:通过调用 reload 加载所有必需的驱动程序。如果驱动程序已经加载,则不执行任何操作

为了能够在类实例化之间持久化驱动程序,它们将被设置为类属性。

备选方案

无。

数据模型影响

无。

REST API 影响

无。

安全影响

无。

通知影响

无。

其他最终用户影响

v2 API 端点的平均响应时间将减少。

性能影响

仅加载一次驱动程序将带来性能提升。

其他部署者影响

在驱动程序实例化时出现的日志消息将只出现一次,而不是在每个请求上出现。

开发人员影响

驱动程序的加载必须在 reload 方法中完成,而不是在 __init__ 中。

实现

负责人

主要负责人

<lukapeschke/peschk_l>

工作项

  • 实现 reloadload 方法。

依赖项

无。

测试

v2 API 的现有单元测试以及计划中的 tempest 测试将测试此功能。

文档影响

v2 API 的开发者文档将被更新,以包含有关 loadreload 方法的信息

参考资料

无。