2012-11-20 10 views
7

Sto provando a distribuire il mio progetto django su GAE. Dopo la distribuzione utilizzando appcfg.py, ho ricevuto questo errore all'interno di GAE. Qualcuno sa come risolvere questo problema?Come devo importare le classi django.middleware nel progetto 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" 

Il codice seguente mostra come le classi middleware vengono importati nei miei 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', 
) 

Grazie per guardare in questo.

risposta

5

Installare memcache con

pip install python-memcached 
+1

'pip installa python3-memcached' per python 3. –

+1

@AnkitPopli Comando python setup.py egg_info non è riuscito con il codice di errore 1 in/tmp/root_build_pot/python3-memcached –

1

vostro caching backend è probabilmente configurato per utilizzare memcache. Memcache è ora disponibile su google-appengine. È necessario utilizzare wrapper memcache da appengine api google.appengine.api.memcache.

Sarà necessario utilizzare uno custom cache backend con django. Potrebbe essere necessario implementare il proprio backend della cache di Django che utilizza l'API di memcache di appengine. L'implementazione di un backend di django dovrebbe essere banale perché le funzioni di appengine api sono facilmente associabili al backend della cache di Django. Quando scrivi un backend come riferimento puoi usare django.core.cache.backends.MemcachedCache

0

Hai una strana configurazione, ho il sospetto che ti imbatterai in MOLTI problemi.

Stai utilizzando la libreria fornita da GAE per django 1.4 Tuttavia, hai anche importato djangoappengine, progettato per django-nonrel.

Non credo che la libreria fornita da GAE e django-nonrel funzionino bene insieme. Sospetto che probabilmente avrai molti errori strani.

Se si utilizzava django-nonrel puro, penso che il proprio middleware sia impostato correttamente.

Questo funziona localmente e si interrompe solo quando si distribuisce? In questo caso è molto probabile che tu usi django-nonrel localmente, ma non lo stai distribuendo, quindi quando viene distribuito utilizza la versione fornita da GAE.

Assicurarsi che django-nonrel sia nella cartella del progetto. E non abilitare django 1.4 nella tua app.yaml.

Problemi correlati