Comment mettre en œuvre efficacement des sessions dans GAE?
-
04-07-2019 - |
Question
Je m'interrogeais sur la mise en place de mes propres sessions (plus pour un exercice que pour toute autre chose) pour une application GAE sur laquelle je travaillais ... au début, je pensais utiliser le magasin de données pour stocker les données de la session. Toutefois, chaque fois que quelque chose doit être ajouté au "compartiment" de la session, il est nécessaire d’enregistrer le fichier dans le magasin de données. Évidemment, c'est mauvais puisque nous voulons minimiser nos écritures. Ensuite, j'ai pensé à utiliser memcache ... cela semblait être une bonne idée, mais nous avons été confrontés à des problèmes de corruption de session en raison du fait que memcache était "expulsé par la pression de la mémoire". par Google. Cela signifie-t-il qu'il ne nous reste que les options suivantes:
- Stocker toutes les données de session dans des cookies
- Écriture de toutes les données de session dans le magasin de données et le memcache, puis lecture uniquement dans le memcache
Quelqu'un a-t-il d'autres idées?
La solution
Je suggère de vérifier (et de contribuer à) ces trois mises en œuvre de sessions Appengine avant de déployer la vôtre:
Vos options semblent bonnes, mais leur choix dépend probablement de la taille des données de session dans votre application.
Autres conseils
MISE À JOUR - 21 mars 2011
Au moment de cette réponse, le correctif de app-engine est abandonné et les utilitaires offre les pires fonctionnalités que gae-sessions .
- GitHub gae-sessions
- HowTo Didacticiels en 10 étapes
Si vous utilisez web2py (version 1.46 ou ultérieure), les sessions sont activées par défaut sur GAE. Ceci est réalisé par les trois lignes suivantes de code web2py en haut du modèle scaffoling:
from gluon.contrib.gql import *
db=GQLDB()
session.connect(request,response,db=db)
Voici un exemple d'action qui compte:
def index():
session.c=session.c+1 if session.c else 1
return dict(counter=session.c)