我在我的项目中使用 flask_restful 已经有一段时间了,因为我喜欢将我的资源分成不同的文件以进行基本组织。现在我想添加flask_caching,我遇到了一个(简单的?)循环导入问题
我的项目结构是这样的
flask_api.py
-resources
--my_resource.py
--my_other_resource.py
--so_many_more_resources.py
my_resources.py 的 Endpoints 添加到 flask_api.py 中,我也在其中创建了 flask_cache 缓存对象,如下:
# flask_api.py
from flask import Flask
from flask_restful import Api
from flask_caching import Cache
from resources import my_resource
app = Flask(__name__)
cache = Cache(app, config={'sample config'})
api = Api(app)
api.add_resource(my_resource.GetStuff, '/api/v2/stuff/get')
# this file also runs the app
然后我(试图)将缓存导入 my_resource.py - 我正在使用 @cache 装饰器
# resources/my_resource.py
from flask_api import cache
class GetStuff(Resource):
@cache.memoize(timeout=30)
def get():
return "Stuff"
但这会导致可怕的循环导入问题。我可以将我所有的资源导入夹cache = Cache(...)
在行下方,上方api.add_resource()
。然而,这感觉就像是一种 hacky 代码的味道,并且是一个非常非常多肉的三明治。我宁愿把它们都放在文件的顶部。
解决此问题的正确方法是什么?(希望不会对大部分代码库进行大修)
tl;dr:flask_api 创建缓存并导入资源 -> 资源无法从 flask_api 导入缓存