2009-09-10 9 views
1

J'écris une application simple avec AppEngine, en utilisant Python. Après une insertion réussie par un utilisateur et une redirection, je voudrais afficher un message de confirmation flash sur la page suivante.Comment conserver l'état entre les demandes dans AppEngine (Python)?

Quelle est la meilleure façon de garder l'état entre une demande et la suivante? Ou est-ce impossible parce que AppEngine est distribué? Je suppose, la question sous-jacente est de savoir si AppEngine fournit un objet de session persistante.

Merci

Hannes

Répondre

3

Aucun support de session est inclus dans App Engine lui-même, mais vous pouvez ajouter votre propre support de session.

GAE Utilities est une bibliothèque faite spécifiquement pour cela; une alternative plus lourde consiste à utiliser des sessions django via App Engine Patch.

+0

Une autre bonne option est Beaker, qui prend en charge les sessions de banque de données, memcache et cookie cryptées. –

+0

Super, merci! gaeutilities fait exactement ce que je cherche! – Hannes

3

Les moyens de conserver un état fiable entre les demandes sont memcache, le magasin de données ou via l'utilisateur (cookies ou post/get).

Vous pouvez également utiliser le cache d'exécution, mais cela est très peu fiable car vous ne savez pas si une requête se terminera dans le même environnement d'exécution ou si l'environnement d'exécution peut laisser tomber le cache entier. Je n'utiliserais vraiment pas le cache d'exécution sauf pour des situations très spécifiques, par exemple je l'utilise pour mettre en cache la sérialisation des objets sur json car c'est assez lent et si la mise en cache est partie, je peux facilement régénérer le résultat.

+0

Ah, peut-être que j'ai répondu trop vite. Mais cela s'applique sûrement à la mise en œuvre des sessions. –

+0

Koen a raison, le plus simple serait d'utiliser un paramètre d'URL ou un cookie. Assurez-vous de le nettoyer correctement pour XSS et/ou d'utiliser un mappage de codes pour les messages ou quelque chose. Au-delà, recherchez une solution de session personnalisée à l'aide de memcache ou de datastore. – RyanW

Questions connexes