forked from ScoDoc/DocScoDoc
Remplace memcached par Redis
This commit is contained in:
parent
da4cea0316
commit
3b5b449a8a
@ -150,11 +150,7 @@ de votre installation ScoDoc 7 pour passer à ScoDoc 8 (*ne pas utiliser en prod
|
||||
|
||||
En tant qu'utilisateur `scodoc` (pour avoir accès aux bases départements de ScoDoc7):
|
||||
|
||||
1. Lancer memcached:
|
||||
|
||||
memcached
|
||||
|
||||
2. Dans un autre terminal, lancer le serveur:
|
||||
Dans un terminal, lancer le serveur:
|
||||
|
||||
export FLASK_APP=scodoc.py
|
||||
export FLASK_ENV=development
|
||||
|
@ -33,7 +33,12 @@ mail = Mail()
|
||||
bootstrap = Bootstrap()
|
||||
moment = Moment()
|
||||
|
||||
cache = Cache(config={"CACHE_TYPE": "MemcachedCache"}) # XXX TODO: configuration file
|
||||
cache = Cache( # XXX TODO: configuration file
|
||||
config={
|
||||
# "CACHE_TYPE": "MemcachedCache"
|
||||
"CACHE_TYPE": "RedisCache"
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def create_app(config_class=Config):
|
||||
|
@ -974,7 +974,7 @@ def MonthTableBody(
|
||||
#
|
||||
# Cache absences
|
||||
#
|
||||
# On cache (via memcached ou autre, voir sco_cache.py) les _nombres_ d'absences
|
||||
# On cache (via REDIS ou autre, voir sco_cache.py) les _nombres_ d'absences
|
||||
# (justifiées et non justifiées) de chaque etudiant dans un semestre donné.
|
||||
# Le cache peut être invalidé soit par étudiant/semestre, soit pour tous
|
||||
# les étudiant d'un semestre.
|
||||
|
@ -27,7 +27,7 @@
|
||||
|
||||
"""Gestion des caches
|
||||
|
||||
Ré-écrite pour ScoDoc8, utilise flask_caching et memcached
|
||||
Ré-écrite pour ScoDoc8, utilise flask_caching et REDIS
|
||||
|
||||
ScoDoc est maintenant multiprocessus / mono-thread, avec un cache en mémoire partagé.
|
||||
"""
|
||||
@ -57,7 +57,6 @@
|
||||
import time
|
||||
import traceback
|
||||
|
||||
import pylibmc
|
||||
from flask import g
|
||||
|
||||
from app.scodoc import notesdb as ndb
|
||||
@ -84,8 +83,8 @@ class ScoDocCache:
|
||||
"""Returns cached evaluation, or None"""
|
||||
try:
|
||||
return CACHE.get(cls._get_key(oid))
|
||||
except pylibmc.Error:
|
||||
log("Warning: memcached error in get")
|
||||
except:
|
||||
log("XXX CACHE Warning: error in get")
|
||||
log(traceback.format_exc())
|
||||
return None
|
||||
|
||||
@ -98,8 +97,8 @@ class ScoDocCache:
|
||||
status = CACHE.set(key, value, timeout=cls.timeout)
|
||||
if not status:
|
||||
log("Error: cache set failed !")
|
||||
except pylibmc.Error:
|
||||
log("Warning: memcached error in set")
|
||||
except:
|
||||
log("XXX CACHE Warning: error in set !!!")
|
||||
|
||||
return status
|
||||
|
||||
@ -207,12 +206,21 @@ class NotesTableCache(ScoDocCache):
|
||||
@classmethod
|
||||
def get(cls, formsemestre_id, compute=True):
|
||||
"""Returns NotesTable for this formsemestre
|
||||
Search in local cache (g.nt_cache) or global app cache (eg REDIS)
|
||||
If not in cache and compute is True, build it and cache it.
|
||||
"""
|
||||
# try local cache (same request)
|
||||
if not hasattr(g, "nt_cache"):
|
||||
g.nt_cache = {}
|
||||
else:
|
||||
if formsemestre_id in g.nt_cache:
|
||||
return g.nt_cache[formsemestre_id]
|
||||
# try REDIS
|
||||
key = cls._get_key(formsemestre_id)
|
||||
nt = CACHE.get(key)
|
||||
if nt or not compute:
|
||||
return nt
|
||||
# Recompute asked table:
|
||||
from app.scodoc import notes_table
|
||||
|
||||
t0 = time.time()
|
||||
@ -220,6 +228,7 @@ class NotesTableCache(ScoDocCache):
|
||||
dt = time.time() - t0
|
||||
log("caching formsemestre_id=%s (%gs)" % (formsemestre_id, dt))
|
||||
_ = cls.set(formsemestre_id, nt)
|
||||
g.nt_cache[formsemestre_id] = nt
|
||||
return nt
|
||||
|
||||
|
||||
|
@ -52,9 +52,12 @@ apt-get install -y python3-wheel
|
||||
apt-get -y install libpq-dev
|
||||
apt-get -y install libcrack2-dev
|
||||
apt-get -y install postgresql
|
||||
apt-get -y install redis
|
||||
apt-get -y install curl
|
||||
apt-get -y install graphviz
|
||||
|
||||
systemctl start redis
|
||||
|
||||
# ------------ CREATION DU VIRTUALENV
|
||||
echo "Creating python3 virtualenv..."
|
||||
python3 -m venv venv || die "can't create Python 3 virtualenv"
|
||||
|
@ -19,7 +19,7 @@
|
||||
# 3- Fichiers de données et config locale:
|
||||
# archives, photos: /opt/scodoc/var/ => /opt/scodoc-data
|
||||
#
|
||||
# 4- TODO migrer de Apache à nginx, installer memcached, scripts service systemd
|
||||
# 4- TODO migrer de Apache à nginx, scripts service systemd
|
||||
#
|
||||
|
||||
source config.sh
|
||||
|
Loading…
Reference in New Issue
Block a user