Уведомления

Группа в Telegram: @pythonsu

#1 Март 16, 2010 10:51:16

silvon
От:
Зарегистрирован: 2010-03-16
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с unicode под WSGI

Добрый День, уважаемое сообщество!

Работаю сейчас над django-проектом, который имеет дело с файлами и папками. Задача простая: в settings указывается путь к родительскому каталогу, потом определенная view-шка создает дерево записей в БД всех дочерних файлов с папками этой родительской папки. Задачу я реализовал, все работает прекрасно под внутреннем сервером python (команда runserver).

Далее, вешаю я этот сайт на продакшин-сервер под Ubuntu Server 9.10 с помощью Apache + WSGI. Тут и начинается карусели. При построении дерева вылетает ексепшин UnicodeDecodeError когда находит файл или папку содержащий русский (и украинский) символ. Вот делали ексепшина:

Traceback:
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
92. response = callback(request, *callback_args, **callback_kwargs)
File "/path/to/project/apps/controllers/gallery_controller.py" in sync
43. GalleryRepository.sync_albums_with_file_system()
File "/path/to/project/apps/repositories/gallery_repository.py" in sync_albums_with_file_system
148. sync_albums_with_file_system(album, syncDateValue, childPath, overrideExistFiles)
File "/path/to/project/apps/repositories/gallery_repository.py" in sync_albums_with_file_system
138. childPath = os.path.join(rootFolder, childUnicode)
File "/usr/lib/python2.6/posixpath.py" in join
70. path += '/' + b

Exception Type: UnicodeDecodeError at /gallery/sync/
Exception Value: ('ascii', '/1111 - \xd0\xba\xd0\xbe\xd0\xbf\xd0\xb8\xd1\x8f', 8, 9, 'ordinal not in range(128)')
Вот конфигурация WSGI:
# coding=utf-8

import os, sys
apache_configuration = os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)
sys.path.append('/usr/local/lib/python2.6/dist-packages/django/')
sys.path.append('/path/to/project/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'myportfolio.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Ситуация по проекту:
1. В проекте у меня все *.py файлы сохранены в кодировке UTF-8 и все они имеют в начале директиву # coding=utf-8
2. Данный проект я тестировал под Mac OS X, Windows XP, Ubuntu Server 9.10 (тот самый продакшин сервер) под тестовым сервером (runserver) - на всех платформах все работает прекрасно c одними и теми же самыми файлами.

По всей видимости проблема именно когда сайт запускается именно под Apache + WSGI.

Я буду признателен за любую информацию!



Офлайн

#2 Март 16, 2010 17:12:04

silvon
От:
Зарегистрирован: 2010-03-16
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с unicode под WSGI

Проблема решена,

кому интересно, здесь решение http://groups.google.com/group/django-users/browse_thread/thread/afdc5e61489c2c9e



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version