2012-11-20 12 views
7

Django projemi GAE'ye dağıtmaya çalışıyorum. Appcfg.py kullanarak konuşlandırdıktan sonra GAE içinde bu hatayı alıyorum. Bu sorunu nasıl çözecek bilen var mı?Google App Engine projesinde django.middleware sınıflarını nasıl içe aktarmalıyım?

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" 

sonraki kod katman sınıfları benim project.settings ithal edilen gösterir: Bu sorunla ilgilendiğiniz için

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', 
) 

teşekkür ederiz.

cevap

5

pip install python-memcached 
+1

'python 3 için python3-memcached'i kurun. –

+1

@AnkitPopli Komut python setup.py egg_info hata kodu 1/tmp/pip_build_root/python3-memcached ile başarısız oldu –

1

Sizin önbelleğe arka ucuyla memcache takın muhtemelen memcache kullanmak üzere yapılandırılır. Memcache artık google-appengine'de kullanılabilir. Appengine api google.appengine.api.memcache'dan memcache sarıcı kullanmanız gerekir.

django ile custom cache backend kullanmanız gerekecektir. Appengine'in memcache api'sini kullanan kendi django önbellek arka ucunuzu uygulamanız gerekebilir. Bir django arka ucunun uygulanması önemsiz olmalıdır, çünkü appengine api'nin işlevleri kolaylıkla django önbellek arka planına eşler. bir referans olarak bir arka uç yazarken sen Sen garip yapılandırmaya sahip django.core.cache.backends.MemcachedCache

0

kullanabilirsiniz, sana sorunların bir LOT içine edeceğiz şüpheli.

Django 1.4 için GAE tarafından sağlanan kitaplığı kullanıyorsunuz, ancak django-nonrel için tasarlanmış olan djangoappengine içe aktarma aracını da aldınız.

Ben Gae sağlanan kütüphane düşünmek ve birlikte iyi çalışması-nonrel django yoktur. Büyük ihtimalle çok tuhaf hatalar alacağınızdan şüpheleniyorum.

saf django-nonrel kullanıyormuş, ben senin katman tamam kurulduğundan düşünüyorum.

Bu, yerel olarak çalışır ve yalnızca dağıttığınız zaman bozulur mu? Bu durumda, büyük olasılıkla yerel olarak django-nonrel kullanıyorsunuz demektir, ancak dağıtmıyorsunuz - dağıtıldığında, GAE tarafından sağlanan sürümü kullanıyor.

emin django-nonrel proje klasöründe olduğundan emin olun. Ve app.yaml dosyasında django 1.4'ü etkinleştirmeyin.