我正在尝试将我的django项目部署到GAE。在使用appcfg.py进行部署后,我在GAE中遇到此错误。有人知道如何解决这个问题吗?
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',
)
感谢您对此进行调查。
答案 0 :(得分:5)
使用
安装内存缓存pip install python-memcached
答案 1 :(得分:1)
您的缓存后端可能配置为使用memcache。 Memcache现在可用于google-appengine。您需要使用appengine api google.appengine.api.memcache中的memcache包装器。
您需要使用带有django的custom cache backend。您可能需要实现自己的django缓存后端,该后端使用appengine的memcache api。实现django后端应该是微不足道的,因为appengine api中的函数很容易映射到django缓存后端。将后端编写为参考时,您可以使用django.core.cache.backends.MemcachedCache
答案 2 :(得分:0)
你有一个奇怪的配置,我怀疑你会遇到很多问题。
您正在为django 1.4使用GAE提供的库 但是,你也有djangoappengine进口,这是专为django-nonrel设计的。
我不认为GAE提供的库和django-nonrel一起工作得很好。我怀疑你可能会遇到很多奇怪的错误。
如果您使用纯django-nonrel,我认为您的中间件设置正常。
这是否在本地工作,并且只在部署时中断?在这种情况下,您最有可能在本地使用django-nonrel,但是您没有部署它 - 因此在部署时,它使用的是GAE提供的版本。
确保django-nonrel位于项目文件夹中。并且不要在你的app.yaml中启用django 1.4。