2013-02-20 5 views
0

У меня есть проект Django, развернутый с Gunicorn и nginx. У меня также есть работа с memcached, а промежуточное программное обеспечение кэша Django() настроено для кэширования сайта.Средство кэширования Django не работает в Gunicorn с Debug = False

Все отлично работает, когда работает с Debug = True, но при переходе на DEBUG = False я получаю следующее сообщение об ошибке в Gunicorn журнала при попытке получить доступ к сайту:

2013-02-20 16:09:50 [25196] [ERROR] Error handling request 
Traceback (most recent call last): 
    File "/home/toursprung/.virtualenvs/myproject/lib/python2.6/site-packages/gunicorn/workers/sync.py", line 102, in handle_request 
    respiter = self.wsgi(environ, resp.start_response) 
    File "/home/toursprung/.virtualenvs/myproject/lib/python2.6/site-packages/django/contrib/staticfiles/handlers.py", line 67, in __call__ 
    return self.application(environ, start_response) 
    File "/home/toursprung/.virtualenvs/myproject/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 247, in __call__ 
    status_text = STATUS_CODE_TEXT[response.status_code] 
AttributeError: 'NoneType' object has no attribute 'status_code' 

странное дело, что Я получаю еще одну ошибку в сообщении об ошибке, которое Django отправляет мне. Здесь я получаю следующее: (ошибка в GZIP Middleware ВТФ.?)

Traceback (most recent call last): 

    File "/home/toursprung/.virtualenvs/myproject/lib/python2.6/site-packages/django/core/handlers/base.py", line 188, in get_response 
    response = middleware_method(request, response) 
    File "/home/toursprung/.virtualenvs/myproject/lib/python2.6/site-packages/django/middleware/gzip.py", line 16, in process_response 
    if len(response.content) < 200: 
    File "/home/toursprung/.virtualenvs/myproject/lib/python2.6/site-packages/django/http/__init__.py", line 699, in _get_content 
    return ''.join([str(e) for e in self._container]) 

UnicodeEncodeError: 'ascii' codec can't encode character u'\x8b' in position 26: ordinal not in range(128) 

Любой ключ, почему это происходит?

Спасибо заранее, Антон

ответ

1

Это было упорядочение моих! Промежуточное программное

Это упорядочивания я, что неправильно:

MIDDLEWARE_CLASSES = (
    'django.middleware.cache.UpdateCacheMiddleware', 
    'myproject.middleware.StripCookieMiddleware', # fix caching problem with analytics cookies 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.locale.LocaleMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.gzip.GZipMiddleware', 
    ... 
    'django.middleware.cache.FetchFromCacheMiddleware' 
) 

Я переместил GZipMiddleware прямо под UpdateCacheMiddleware (КИ, есть мой маленький промежуточный слой, что полоски Google Analytics куки между ними), и теперь все работает как ожидалось.

Так что это право порядок промежуточное программное:

MIDDLEWARE_CLASSES = (
    'django.middleware.cache.UpdateCacheMiddleware', 
    'myproject.middleware.StripCookieMiddleware', # fix caching problem with analytics cookies 
    'django.middleware.gzip.GZipMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.locale.LocaleMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    ... 
    'django.middleware.cache.FetchFromCacheMiddleware' 
) 

Может быть, это поможет кому-то в будущем ...

 Смежные вопросы

  • Нет связанных вопросов^_^