1
0
mirror of https://github.com/alvierahman90/mobile-chemguide.git synced 2025-10-13 07:54:23 +00:00

closes #1 cache pages when retrieved

This commit is contained in:
2021-05-20 09:26:53 +01:00
parent d99e8589fd
commit 1cea4a7b1c
4 changed files with 48 additions and 5 deletions

View File

@@ -1,16 +1,28 @@
from flask import Flask
import requests
import re
import redis
import time
app = Flask(__name__)
CHEMGUIDE_BASE="https://chemguide.co.uk/"
PAGE_CACHE_DURATION = 3600 # cache pages for an hour before retrieving again
db = redis.Redis(host='db', port=6379, db=0)
@app.route('/')
@app.route('/<path:path>')
def path(path='/'):
class PathKeyType():
Data = 1
Date = 2
def pathkey(path, type):
if type == PathKeyType.Data:
return f"{path}:data"
elif type == PathKeyType.Date:
return f"{path}:date"
def set_cache(path):
r = requests.get(CHEMGUIDE_BASE + '/' + path)
try:
return re.sub(
data = re.sub(
r'<table .* width="480"',
'<table style="max-width: 60em; margin: 0 auto; font-size: 16px;"',
re.sub(
@@ -41,7 +53,24 @@ def path(path='/'):
)
)
except UnicodeDecodeError:
return r.content
data = r.content
db.set(pathkey(path, PathKeyType.Data), data)
db.set(pathkey(path, PathKeyType.Date), time.time())
def get_page(path):
date = db.get(pathkey(path, PathKeyType.Date))
if date is not None:
if float(str(date, 'utf-8')) + PAGE_CACHE_DURATION < time.time():
set_cache(path)
else:
set_cache(path)
return db.get(pathkey(path, PathKeyType.Data))
@app.route('/')
@app.route('/<path:path>')
def path(path='/'):
return get_page(path)
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True)