2012-11-20 2 views
7

J'essaye de déployer mon projet django à GAE. Après le déploiement en utilisant appcfg.py, j'obtiens cette erreur dans GAE. Est-ce que quelqu'un sait comment résoudre ce problème?Comment importer des classes django.middleware dans un projet Google App Engine?

Traceback (most recent call last): 
    File "/base/python27_runtime/python27_lib/versions/1/google/appengine/runtime 
    /wsgi.py", line 223, in Handle 
    result = handler(dict(self._environ), self._StartResponse) 
    File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django 
    /core/handlers/wsgi.py", line 219, in __call__ 
    self.load_middleware() 
    File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django 
    /core/handlers/base.py", line 47, in load_middleware 
    raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % 
    (mw_module, e)) 

    ImproperlyConfigured: Error importing middleware django.middleware.cache: "No module 
    named memcache" 

Le code suivant montre comment les classes de middleware sont importées dans mes project.settings:

from djangoappengine.settings_base import * 

.... 

MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.cache.FetchFromCacheMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
) 

Merci pour la recherche dans ce.

Répondre

5

Installer memcache avec

pip install python-memcached 
+1

'pip install python3-memcached' pour python 3. –

+1

@AnkitPopli Commande python setup.py egg_info a échoué avec le code d'erreur 1 dans/tmp/pip_build_root/python3-memcached –

1

Votre back-end de mise en cache est probablement configuré pour utiliser memcache. Memcache est maintenant disponible sur google-appengine. Vous devez utiliser l'encapsuleur memcache d'appengine api google.appengine.api.memcache.

Vous aurez besoin d'utiliser un custom cache backend avec django. Vous devrez peut-être implémenter votre propre backend de cache django qui utilise l'API memcache d'appengine. L'implémentation d'un backend django devrait être triviale car les fonctions de l'api appengine se mappent facilement sur le backend du cache django. Lorsque vous écrivez un backend comme référence, vous pouvez utiliser django.core.cache.backends.MemcachedCache

0

Vous avez une configuration étrange, je suppose que vous rencontrerez BEAUCOUP de problèmes.

Vous utilisez la bibliothèque fournie GAE pour django 1.4 Cependant, vous avez également importé djangoappengine, qui est conçu pour django-nonrel.

Je ne pense pas que la bibliothèque GAE fournie et django-nonrel fonctionnent bien ensemble. Je suppose que vous aurez probablement beaucoup d'erreurs bizarres.

Si vous utilisiez du django-nonrel pur, je pense que votre middleware est configuré correctement.

Est-ce que cela fonctionne localement et ne casse que lorsque vous déployez? Dans ce cas, vous utiliserez probablement django-nonrel localement, mais vous ne le déploierez pas - donc lorsqu'il est déployé, il utilise la version fournie par GAE.

Assurez-vous que django-nonrel est dans votre dossier de projet. Et n'activez pas django 1.4 dans votre app.yaml.

Questions connexes