Если Django начинает ругаться из под gunicorn UnicodeEncodeError

Послу установки отлаженного приложения на сервер возможена такая ситуация, что приложение не работает, а в логах что-то вроде

type 'exceptions.UnicodeEncodeError', ': 
', UnicodeEncodeError('ascii', u'dpsse/history/lipa-vagonka.ru/\u0412\u0430\u0433\u043e\u043d\u043a\u0430/2013-09-30', 30, 37, 'ordinal not in range(128)'))

Скорее всего это говорит о том, что запущенный экземпляр Django не знает о системной локали, проверить это легко, нужно в рабочем месте приложения сгенерировать исключение в котором показать текущую локаль

raise RuntimeError( os.has_key('LANG') )

или

import logging
logger = logging.getLogger( __name__ )
logger.error( os.has_key('LANG') )

Если будет что-то вроде

raise RuntimeError( os.environ['LANG'] )
  File "/data/django/gaspiko.ru/env/lib/python2.6/UserDict.py", line 22, in __getitem__
    raise KeyError(key)
KeyError: 'LANG'

Значит локаль ни где не установлена! Проще всего установить локаль в скрипте запуска gunicorn

1 #!/bin/bash
2 export LANG=ru_RU.UTF-8
3 set -e

После перезапуска всё должно работать

похожие страницы

  1. Подготовка виртуальной среды для разработки в среде Django
  2. Django использование select_related для оптимизации работы
  3. Linux Django pyodbc MSSQL
  4. Скрипт автоматического создания виртуальных хостов apache2
  5. web.py казнить, нельзя помиловать