Add caching
This commit is contained in:
parent
b317725023
commit
edf09757ae
|
@ -19,6 +19,10 @@ pip install -r requirements.txt
|
||||||
|
|
||||||
SHEET_ID = #FILLMEIN
|
SHEET_ID = #FILLMEIN
|
||||||
RANGE_NAME = #METOO
|
RANGE_NAME = #METOO
|
||||||
|
|
||||||
|
[Cache]
|
||||||
|
|
||||||
|
TIMEOUT = 10
|
||||||
```
|
```
|
||||||
|
|
||||||
3. [Request a Google service account](https://console.cloud.google.com/iam-admin/serviceaccounts)
|
3. [Request a Google service account](https://console.cloud.google.com/iam-admin/serviceaccounts)
|
||||||
|
@ -31,5 +35,4 @@ RANGE_NAME = #METOO
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
|
|
||||||
- Database caching: don't re-request google sheet data every time
|
|
||||||
- Error handling: it shouldn't ever crash on user input
|
- Error handling: it shouldn't ever crash on user input
|
||||||
|
|
|
@ -2,19 +2,31 @@ from .sheet_data import google_sheet_to_json
|
||||||
|
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
from flask_cors import CORS, cross_origin
|
from flask_cors import CORS, cross_origin
|
||||||
|
from flask_caching import Cache
|
||||||
|
|
||||||
|
import configparser
|
||||||
|
|
||||||
|
# Setup Flask app
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
# Add CORS
|
||||||
cors = CORS(app)
|
cors = CORS(app)
|
||||||
app.config['CORS_HEADERS'] = 'Content-Type'
|
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 = configparser.ConfigParser()
|
||||||
CONFIG.read("config.ini")
|
CONFIG.read("config.ini")
|
||||||
|
|
||||||
SPREADSHEET_ID = CONFIG["Google"]["SHEET_ID"]
|
SPREADSHEET_ID = CONFIG["Google"]["SHEET_ID"]
|
||||||
RANGE_NAME = CONFIG["Google"]["RANGE_NAME"]
|
RANGE_NAME = CONFIG["Google"]["RANGE_NAME"]
|
||||||
|
CACHE_TIMEOUT = int(CONFIG["Cache"]["TIMEOUT"])
|
||||||
|
|
||||||
@app.route('/data.json')
|
@app.route('/data.json')
|
||||||
@cross_origin()
|
@cross_origin()
|
||||||
|
@cache.cached(timeout=CACHE_TIMEOUT)
|
||||||
def data_json():
|
def data_json():
|
||||||
return google_sheet_to_json(SPREADSHEET_ID, RANGE_NAME)
|
return google_sheet_to_json(SPREADSHEET_ID, RANGE_NAME)
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ certifi==2020.4.5.1
|
||||||
chardet==3.0.4
|
chardet==3.0.4
|
||||||
click==7.1.2
|
click==7.1.2
|
||||||
Flask==1.1.2
|
Flask==1.1.2
|
||||||
|
Flask-Caching==1.8.0
|
||||||
Flask-Cors==3.0.8
|
Flask-Cors==3.0.8
|
||||||
google-api-core==1.17.0
|
google-api-core==1.17.0
|
||||||
google-api-python-client==1.8.2
|
google-api-python-client==1.8.2
|
||||||
|
|
Loading…
Reference in a new issue