From 3e81ca5dbb92034457b58711c0f0612777271e44 Mon Sep 17 00:00:00 2001 From: thomaswoehlke <thomas.woehlke@gmail.com> Date: Tue, 18 May 2021 12:36:39 +0200 Subject: [PATCH] work --- requirements/dev.in | 1 + src/covid19/blueprints/app_all/all_model.py | 6 +++++- src/covid19/blueprints/who/who_model.py | 14 ++++++++------ src/database.py | 8 +++++--- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/requirements/dev.in b/requirements/dev.in index 4a2502f7..5531f6be 100644 --- a/requirements/dev.in +++ b/requirements/dev.in @@ -4,6 +4,7 @@ Flask-Cors>=3.0.10 Flask-BS4>=4.5.3.0,<5.0 Flask-Admin>=1.5.7 Flask-Login>=0.5.0 +Flask-Caching>=1.10.1 celery[redis]>=5.0.5 PyMySQL>=1.0.2 psycopg2-binary>=2.8.6 diff --git a/src/covid19/blueprints/app_all/all_model.py b/src/covid19/blueprints/app_all/all_model.py index d5d78585..909779d5 100644 --- a/src/covid19/blueprints/app_all/all_model.py +++ b/src/covid19/blueprints/app_all/all_model.py @@ -1,5 +1,5 @@ from datetime import date, datetime -from database import db, ITEMS_PER_PAGE +from database import db, cache, ITEMS_PER_PAGE class ApplicationDateReported(db.Model): @@ -136,12 +136,14 @@ class ApplicationDateReported(db.Model): .one_or_none() @classmethod + @cache.memoize(50) def get_by_date_reported(cls, p_date_reported: str): return db.session.query(cls)\ .filter(cls.date_reported_import_str == p_date_reported)\ .one() @classmethod + @cache.memoize(50) def find_by_date_reported(cls, p_date_reported: str): return db.session.query(cls)\ .filter(cls.date_reported_import_str == p_date_reported)\ @@ -206,6 +208,7 @@ class ApplicationRegion(db.Model): return regions @classmethod + @cache.memoize(50) def get_by_id(cls, other_id: int): return db.session.query(cls)\ .filter(cls.id == other_id)\ @@ -218,6 +221,7 @@ class ApplicationRegion(db.Model): .one_or_none() @classmethod + @cache.memoize(50) def get_by_region(cls, i_region: str): return db.session.query(cls)\ .filter(cls.region == i_region)\ diff --git a/src/covid19/blueprints/who/who_model.py b/src/covid19/blueprints/who/who_model.py index 6340ab3f..35afafce 100644 --- a/src/covid19/blueprints/who/who_model.py +++ b/src/covid19/blueprints/who/who_model.py @@ -1,7 +1,7 @@ from sqlalchemy import and_ from datetime import date from sqlalchemy.orm import joinedload, subqueryload -from database import db, ITEMS_PER_PAGE +from database import db, cache, ITEMS_PER_PAGE from covid19.blueprints.app_all.all_model import ApplicationDateReported, ApplicationRegion @@ -139,6 +139,7 @@ class WhoCountry(db.Model): ).one_or_none() @classmethod + @cache.memoize(50) def get_by_country_code(cls, i_country_code): return db.session.query(cls).filter( cls.country_code == i_country_code @@ -150,13 +151,14 @@ class WhoCountry(db.Model): cls.country == i_country ).one_or_none() - @classmethod - def get_by_country_code(cls, i_country_code): - return db.session.query(cls).filter( - cls.country_code == i_country_code - ).one() + # @classmethod + # def get_by_country_code(cls, i_country_code): + # return db.session.query(cls).filter( + # cls.country_code == i_country_code + # ).one() @classmethod + @cache.memoize(50) def get_by_country(cls, i_country): return db.session.query(cls).filter( cls.country == i_country diff --git a/src/database.py b/src/database.py index 1970a40c..1553a35d 100644 --- a/src/database.py +++ b/src/database.py @@ -1,6 +1,6 @@ # TODO: #210 database.py: logging for Celery on Windows from flask import Flask, logging -# from flask_caching import Cache +from flask_caching import Cache from flask_cors import CORS from flask_bs4 import Bootstrap from flask_sqlalchemy import SQLAlchemy @@ -11,7 +11,9 @@ from celery import Celery # TODO: #210 database.py: logging for Celery on Windows from celery.utils.log import LoggingProxy -# cache = Cache(config={"CACHE_TYPE": "simple"}) +# https://flask-caching.readthedocs.io/en/latest/ + +cache = Cache(config={"CACHE_TYPE": "simple"}) app_cors = CORS() app_bootstrap = Bootstrap() login_manager = LoginManager() @@ -32,7 +34,7 @@ def create_app(): my_app.config['SQLALCHEMY_DATABASE_URI'] = my_db_url my_app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # silence the deprecation warning my_app.config['FLASK_ADMIN_SWATCH'] = 'superhero' - # cache.init_app(app) + cache.init_app(my_app) return my_app -- GitLab