diff --git a/README.md b/README.md index 3717d68..7d010de 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,10 @@ pip install -r requirements.txt SHEET_ID = #FILLMEIN RANGE_NAME = #METOO + +[Cache] + +TIMEOUT = 10 ``` 3. [Request a Google service account](https://console.cloud.google.com/iam-admin/serviceaccounts) @@ -31,5 +35,4 @@ RANGE_NAME = #METOO ## TODO -- Database caching: don't re-request google sheet data every time - Error handling: it shouldn't ever crash on user input diff --git a/blokdata/app.py b/blokdata/app.py index a4cdc04..5a37b6f 100644 --- a/blokdata/app.py +++ b/blokdata/app.py @@ -2,19 +2,31 @@ from .sheet_data import google_sheet_to_json from flask import Flask from flask_cors import CORS, cross_origin +from flask_caching import Cache + +import configparser + +# Setup Flask app app = Flask(__name__) + +# Add CORS cors = CORS(app) app.config['CORS_HEADERS'] = 'Content-Type' -import configparser +# Add caching +cache = Cache(app, config={'CACHE_TYPE': 'simple'}) + +# Read the config file CONFIG = configparser.ConfigParser() CONFIG.read("config.ini") SPREADSHEET_ID = CONFIG["Google"]["SHEET_ID"] RANGE_NAME = CONFIG["Google"]["RANGE_NAME"] +CACHE_TIMEOUT = int(CONFIG["Cache"]["TIMEOUT"]) @app.route('/data.json') @cross_origin() +@cache.cached(timeout=CACHE_TIMEOUT) def data_json(): return google_sheet_to_json(SPREADSHEET_ID, RANGE_NAME) diff --git a/requirements.txt b/requirements.txt index b36bea2..74a1550 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,7 @@ certifi==2020.4.5.1 chardet==3.0.4 click==7.1.2 Flask==1.1.2 +Flask-Caching==1.8.0 Flask-Cors==3.0.8 google-api-core==1.17.0 google-api-python-client==1.8.2