2012-11-20 122 views
7

我想將我的django項目部署到GAE。在使用appcfg.py進行部署後,我在GAE中發現了這個錯誤。有人知道如何解決這個問題嗎?我應該如何在Google App Engine項目中導入django.middleware類?

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" 

下面的代碼顯示了中間件類是如何在我的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', 
) 

感謝您尋找到這一點。

回答

5

pip install python-memcached 
+1

Python安裝python3-memcached' 3. –

+1

@AnkitPopli命令python setup.py egg_info失敗,錯誤代碼1在/ tmp/pip_build_root/python3-memcached中 –

1

你的緩存後端安裝內存緩存配置都可以使用內存緩存。 Memcache現在可在google-appengine上使用。您需要使用appengine api google.appengine.api.memcache中的memcache wrapper。

您需要使用帶有django的custom cache backend。您可能需要實現您自己的使用appengine的memcache api的django緩存後端。實現django後端應該是微不足道的,因爲appengine api的函數很容易映射到django緩存後端。在編寫後端作爲參考時,您可以使用django.core.cache.backends.MemcachedCache

0

您有一個奇怪的配置,我懷疑您會碰到很多問題。

你正在使用GAE提供的庫爲Django 1.4 但是,你也有djangoappengine導入,它是爲django-nonrel設計的。

我不認爲GAE提供了庫和django-nonrel在一起工作。我懷疑你可能會得到很多奇怪的錯誤。

如果您使用純django-nonrel,我認爲您的中間件設置正常。

這是否在本地工作,並且只在部署時破壞?在這種情況下,你最有可能在本地使用django-nonrel,但是你沒有部署它 - 所以在部署時使用GAE提供的版本。

確保django-nonrel在您的項目文件夾中。並且不要在你的app.yaml中啓用django 1.4。

相關問題