2009-07-16 6 views
4

Je suis en cours d'exécution Django (1.0.2) sur Google App Engine, et je voudrais savoir qui (le cas échéant) de la Django caching modules suivante doit travailler avec soi Google's memcache mise en œuvre:Les modules de cache de Django fonctionneront-ils sur Google App Engine?

Middlewear

  • django.middleware.cache.UpdateCacheMiddleware

  • django.middleware.common.CommonMiddleware

  • django.middleware.cache.FetchFromCacheMiddleware

Décorateurs

  • django.views.decorators.cache.cache_page

mise en cache de fragment de modèle

Dans un modèle:

{{ load cache }}{% cache 500 cache_name %}...cached...{% endcache %} 

bas niveau API

  • django.core.cache

Si une partie ou l'ensemble de ces modules devraient travailler, sont-il des changements nécessaires pour faire Ils fonctionnent correctement, et y a-t-il des préoccupations ou des pièges dont on doit être conscient lorsqu'on les utilise?

J'ai parcouru la documentation et passé un peu de temps à chercher sur Google, mais je n'ai pas vu la réponse à cette question. Je soupçonne que c'est une solution "clé en main", mais méfiez-vous d'utiliser les classes Django sans au moins une référence que quelqu'un d'autre l'a fait sans problème.

Merci beaucoup. «Il est possible d'utiliser presque la totalité de la pile Django sur Google App Engine, y compris le middleware», indique «

Répondre

4

Running Django on Google App Engine». En outre, cette page a un exemple qui comprend l'une des classes que vous avez posées au sujet, donc au moins que l'on doit travailler:

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware', 
... 

Divers sites tels que this one ont le code pour l'utilisation AppEngine et le code de mise en cache Django, tels comme django.middleware.cache.UpdateCacheMiddleware. Voir this Google search pour d'autres références, de qualité variable.

Je n'ai pas vraiment utilisé ce genre de choses, donc je ne peux que prendre le mot des autres, mais il semble que plusieurs personnes l'aient fait.

Editer: Les tickets Django 7398 et 7399 sont pertinents pour cela.

8

Non, le moteur de l'application fournit une API memcached personnalisée. Ce que vous devrez faire (et il peut déjà y avoir une implémentation open source de ceci, je ne sais pas), est d'écrire un backend de cache Django pour cette API, ils sont assez simples, vous pouvez utiliser le backend memcached existant comme base pour votre nouveau: http://code.djangoproject.com/browser/django/trunk/django/core/cache/backends/memcached.py. http://code.google.com/appengine/docs/python/memcache/usingmemcache.html montre à quoi ressemble l'API memcached App Engine.

+0

Pour mémoire, je pense que les deux réponses à cette question sont précieuses. Il n'était pas clair comment Stackoverflow pourrait gérer une égalité dans les votes lorsque la prime a pris fin, et j'avais espéré que cela diviserait la prime en cas d'égalité. Malheureusement, il semble avoir arbitrairement choisi une réponse et lui avoir accordé toute la générosité. Merci pour la réponse, Lazypython, c'était utile et je l'apprécie. –

Questions connexes