2012-11-20 8 views
7

Ich versuche, mein Django-Projekt auf GAE zu implementieren. Nach der Bereitstellung mit appcfg.py bekomme ich diesen Fehler in GAE. Weiß jemand, wie man dieses Problem löst?Wie importiere ich django.middleware-Klassen im Google App Engine-Projekt?

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" 

Der nächste Code zeigt, wie die Middleware-Klassen importiert werden in meinem 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', 
) 

Dank für das in diese suchen.

Antwort

5

Installieren memcache mit

pip install python-memcached 
+1

'pip install python3-memcached' für python 3. –

+1

@AnkitPopli Befehl python setup.py ei_info ist mit Fehlercode 1 in/tmp/pip_build_root/python3-memcached fehlgeschlagen –

1

Ihre Caching-Backend wird wahrscheinlich verwenden memcache konfiguriert. Memcache ist jetzt auf Google-Appengine verfügbar. Sie müssen Memcache Wrapper von appengine api google.appengine.api.memcache verwenden.

Sie müssen einen custom cache backend mit Django verwenden. Möglicherweise müssen Sie ein eigenes Django-Cache-Backend implementieren, das die Memcache-API von appengine verwendet. Die Implementierung eines django-Backends sollte trivial sein, da Funktionen von appengine api problemlos auf das django-Cache-Backend zugreifen können. Wenn Sie ein Backend als Referenz schreiben, können Sie django.core.cache.backends.MemcachedCache

0

verwenden. Sie haben eine seltsame Konfiguration, ich vermute, Sie werden eine Menge Probleme bekommen.

Sie verwenden die GAE bereitgestellten Bibliothek für Django 1.4 Allerdings haben Sie auch Djangoappengine importiert, die für Django-Nonrel konzipiert ist.

Ich glaube nicht, dass die GAE Bibliothek und Django-Nonrel gut zusammen arbeiten. Ich vermute, Sie werden wahrscheinlich eine Menge seltsamer Fehler bekommen.

Wenn Sie reine Django-Nonrel verwenden, denke ich, Ihre Middleware ist in Ordnung eingerichtet.

Funktioniert dies lokal und bricht nur bei der Bereitstellung? In diesem Fall verwenden Sie django-nonrel am häufigsten lokal, aber Sie stellen es nicht bereit. Bei der Bereitstellung wird die von GAE bereitgestellte Version verwendet.

Stellen Sie sicher, dass sich Django-Nonrel in Ihrem Projektordner befindet. Und aktivieren Sie Django 1.4 nicht in Ihrer App.Yaml.