500 внутренняя ошибка сервера при импорте модуля python в wsgi - PullRequest
2 голосов
/ 12 марта 2011

У меня есть скрипт Python, который выполняет функции асинхронно с помощью библиотеки PEST wsgi.Однако, когда я пытаюсь импортировать другой модуль, это просто приводит к ошибке 500.

Я пытаюсь сослаться на него так:

from foo import * 
from foo import Foo

, где foo - это файл .py, в котором у меня есть объект, на который я хочу сослаться.

Пытался отслеживать вызовы через Chrome Inspect Element Control, но не смог ничего найти.

Также пытался отлаживать, используя журнал ошибок Apache, но ничего там.
Любые подсказки приветствуются.

Обновление: я попробовал следующее, что привело к той же самой ошибке 500:

- используйте

import site 

и

site.addsitedir("path/to/my/py/files/folder")

- измените файл Apache2 httpd.conf, добавив следующее:

WSGIPythonPath /path/to/my/py/files/folder

- измените файл конфигурации приложения в /etc/apache2/sites-available/myapp.conf, вставив приведенный вышеWSGIPythonPath

Ответы [ 4 ]

3 голосов
/ 12 марта 2011

Ошибка Apache 500 просто говорит вам, что скрипт Python возвращает ошибку. Я предполагаю, что в среде Apache Python не может найти этот модуль. Попробуйте простой скрипт, который печатает sys.path и гарантирует, что в нем есть каталоги, которые вы ожидаете.

2 голосов
/ 14 марта 2011

Добавление

WSGIPythonPath /path/to/my/py/files/folder

перед тем, как любой другой псевдоним или каталог в файле конфигурации приложения будет иметь значение. Проблема решена!

1 голос
/ 12 марта 2011

Возможно, вам следует использовать этот шаблон для сценариев cgi, чтобы получить ошибки в html-форме:

<code>import cgi
import cgitb; cgitb.enable()  # for troubleshooting
import traceback
# code here
except:
    tb = traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)
    tb = ''.join(tb)
    print '<pre>%s
'% tb
0 голосов
/ 13 марта 2011

Если исключение распространяется обратно до mod_wsgi, то подробности должны быть записаны в соответствующий журнал ошибок Apache. Если это не так, возможно, используемая вами инфраструктура / инструментарий WSGI захватывает исключение и возвращает общую страницу ответа HTTP 500. В этом случае вам может потребоваться включить параметр отладки в используемой инфраструктуре / наборе WSGI.

Кроме того, проблема не в файле / приложении сценария WSGI, а в конфигурации Apache, и в этом случае вы не будете искать исключение / трассировку Python. Таким образом, вам нужно более внимательно изучить файлы журнала ошибок Apache, найти любую ошибку и указать, что она говорит.

...