From f8962d410200164354649c896d557fbf5c83a5e5 Mon Sep 17 00:00:00 2001 From: khansadaoudi Date: Fri, 18 Oct 2024 16:55:20 +0200 Subject: [PATCH] add flask caching for get projects --- .gitignore | 2 +- app/__init__.py | 5 ++++- app/config.py | 3 +++ app/projects/controller.py | 4 +++- requirements.txt | 1 + 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index cbba5ca..5a241e3 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,7 @@ app/public/tmp/* app/public/tmp/* app/uploads/images/ - +app/tmp/cache/ .idea/ *.pyc py3/ diff --git a/app/__init__.py b/app/__init__.py index 7916c9b..c6231e3 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -2,13 +2,15 @@ from flask_sqlalchemy import SQLAlchemy from flask_restx import Api -from flask_login import LoginManager, current_user +from flask_login import LoginManager +from flask_caching import Cache from flask_migrate import Migrate from app.klang.config import KlangConfig from app.utils.grew_config import GrewConfig from app.utils.arborator_parser_config import ParserConfig +cache = Cache() db = SQLAlchemy() login_manager = LoginManager() migrate = Migrate() @@ -40,6 +42,7 @@ def create_app(env=None): db.init_app(app) migrate.init_app(app, db) login_manager.init_app(app) + cache.init_app(app) from .auth import auth as auth_blueprint diff --git a/app/config.py b/app/config.py index 8fead3d..dc2ce4f 100644 --- a/app/config.py +++ b/app/config.py @@ -5,6 +5,7 @@ basedir = os.path.abspath(os.path.dirname(__file__)) UPLOAD_FOLDER = "app/tmp/data/" +CACHE_FOLDER = "app/tmp/cache/" UPLOAD_IMAGE_FOLDER = "app/uploads/images" MAX_TOKENS = 200000 @@ -24,6 +25,8 @@ class Config: SESSION_COOKIE_HTTPONLY = False SESSION_COOKIE_SECURE = True MAX_TOKENS = MAX_TOKENS + CACHE_TYPE = 'filesystem' + CACHE_DIR = CACHE_FOLDER class DevelopmentConfig(Config): CONFIG_NAME = "dev" diff --git a/app/projects/controller.py b/app/projects/controller.py index 5cb218d..ed74da8 100644 --- a/app/projects/controller.py +++ b/app/projects/controller.py @@ -10,6 +10,7 @@ import werkzeug from app import db +from app import cache from app.utils.grew_utils import GrewService from app.user.service import UserService from app.trees.service import TreeValidationService @@ -23,9 +24,10 @@ api = Namespace("Project", description="Endpoints for dealing with projects") # noqa @api.route("/") + class ProjectResource(Resource): "Project" - + @cache.cached(timeout=1200, key_prefix='projects_list') @responds(schema=ProjectExtendedSchema(many=True), api=api) def get(self) -> List[ProjectExtendedInterface]: """Get all projects""" diff --git a/requirements.txt b/requirements.txt index 9624a16..b2bdf1f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,6 +17,7 @@ cryptography==43.0.1 et-xmlfile==1.0.1 Flask==3.0.0 flask-accepts==0.17.4 +Flask-Caching==2.3.0 Flask-Cors==4.0.2 Flask-Login==0.6.3 Flask-Migrate==2.5.3