Если 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
После перезапуска всё должно работать
текст недоступен
комментарии