Случайная ошибка 500

Мы используем Apache+mod_wsgi для размещения нашего приложения Django.

Апач:

WSGIScriptAlias / /home/rls/django_wsgi.py

django_wsgi.py:

import os, sys
sys.path.append('data/misc/django')
os.environ['DJANGO_SETTINGS_MODULE'] = 'rls.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

Все работает нормально, но иногда мы получаем 500 Internal Server Error с этим в журналах:

mod_wsgi (pid=4825): Exception occurred processing WSGI script '/home/rls/django_wsgi.py'.
Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/django/core/handlers/wsgi.py", line 230, in __call__
self.load_middleware()
File "/usr/lib/python2.5/site-packages/django/core/handlers/base.py", line 33, in load_middleware
for middleware_path in settings.MIDDLEWARE_CLASSES:
File "/usr/lib/python2.5/site-packages/django/utils/functional.py", line 276, in __getattr__
self._setup()
File "/usr/lib/python2.5/site-packages/django/conf/__init__.py", line 40, in _setup
self._wrapped = Settings(settings_module)
File "/usr/lib/python2.5/site-packages/django/conf/__init__.py", line 75, in __init__
raise ImportError("Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'rls.settings' (Is it on sys.path? Does it have syntax errors?): No module named rls.settings

Конечно, в settings.py нет синтаксических ошибок, так как он нормально загружается через раз. Что мне не хватает? Большое спасибо за вашу помощь.


person Denis B. Bukharov    schedule 02.03.2011    source источник
comment
Обычно это не должно появляться случайно, если вы просто не перезапустили процессы демона Apache или mod_wsgi с момента последнего изменения конфигурации в коде Python. Опубликуйте соответствующие части файла конфигурации Apache для настройки mod_wsgi, включая то, как вы используете VirtualHosts, у вас есть несколько определений VirtualHost.   -  person Graham Dumpleton    schedule 03.03.2011


Ответы (1)


Попробуйте указать абсолютный путь к каталогу, содержащему файл settings.py. В вашем случае должно быть что-то вроде:

sys.path.append('/%s/data/misc/django'%ROOT_2_DATA)

Вы также должны убедиться, что у группы apache есть права на чтение/запись папки.

person Community    schedule 16.03.2011
comment
Да, я заметил, что / отсутствовал почти сразу после публикации этого вопроса, и это действительно решает проблему. Я не знаю, почему это вообще сработало, поскольку путь был неправильным. Спасибо за Ваш ответ. - person Denis B. Bukharov; 17.03.2011