408 Тайм-аут запроса с использованием Apache mod_wsgi Python Django в Windows

#python #django #apache

#питон #django #апач

Вопрос:

У меня есть приложение Django, которое развертывается в локальной сети с использованием Apache mod_wsgi под Windows. Когда я бегу python manage.py runserver , все работает нормально. Но когда я запускаю службу Apache, я не могу получить доступ к приложению. Единственный ответ, который я получаю от access.журнал — это код ошибки 408 . Ниже приведен мой httpd.conf :

 LoadFile "c:/users/felix/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/felix/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/users/felix/appdata/local/programs/python/python37"

ServerName localhost

WSGIScriptAlias / "D:/dev/test_server/django/django/wsgi_windows.py"
Listen 8000
<VirtualHost *:8000>
    WSGIPassAuthorization On
    ErrorLog "logs/django.error.log"
    CustomLog "logs/django.access.log" combined

    Alias /static "D:/dev/test_server/staticfiles"
    <Directory "D:/dev/test_server/staticfiles">
        Require all granted
    </Directory>

    <Directory "D:/dev/test_server/django/django">
        <Files wsgi_windows.py>
            Require all granted
        </Files>
    </Directory>

    <Directory />
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
 

А ниже приведен wsgi_windows.py файл:

 # Activate the virtualenv
activate_this = 'D:/dev/test_server/.venv/Scripts/activate_this.py'
exec(open(activate_this).read(), dict(__file__=activate_this))

import os  # noqa
import sys  # noqa
import site  # noqa

# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('D:/dev/test_server/.venv/Lib/site-packages')

# Add the app's directory to the PYTHONPATH
sys.path.append('D:/dev/test_server/django')
sys.path.append('D:/dev/test_server/django/django')

os.environ['DJANGO_SETTINGS_MODULE'] = 'django.settings'
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django.settings")

from django.core.wsgi import get_wsgi_application  # noqa
application = get_wsgi_application()
 

Я был бы признателен за любые идеи или намеки по этому вопросу.

Комментарии:

1. Лучше всего начать с проверки файлов журнала apache, чтобы убедиться, что запрашиваемый вами URL-адрес присутствует в ur urls.py и вы можете получить к нему доступ через локальный запуск (runserver) Удачи

2. @octopus Команда python manage.py runserver работает просто отлично. Каждый URL-адрес работает. Файлы журналов в Apache не дают никакой дополнительной информации, кроме 408 кода.

Ответ №1:

  1. запустите apache в командной строке с помощью «httpd» и найдите сообщения об ошибках. Если у Apache возникает проблема при запуске, в файлах журнала нет сообщения.
  2. проверьте error.log Вы можете поместить ‘print(‘xyz’) даже в settings.py и в другом месте, и таким образом, проверив error.log, посмотрите, как настроено ваше приложение и как далеко обрабатывается запрос. Если ваше приложение застряло где-то вроде этого, вы найдете код, в котором оно застряло

Комментарии:

1. Что ж, спасибо за подсказку. Забавно, что в лог-файлах нет сообщений, если у Apache возникла проблема. Но да, я поместил print -функции в settings.py и эти строки отображаются в error.log в папке Apache logs. Так что я предполагаю, что проблема не в настройках моего проекта. Есть идеи, какие другие файлы запускаются при запуске? Я также разместил print -function в моем приложении views.py но это не было показано в error.log.

2. Итак, Apache запущен, и ваши настройки приложения django запущены, а 408 означает тайм-аут, поэтому ваше приложение не возвращается в течение тайм-аута Apache. Пожалуйста, проверьте в httpd.conf, если тайм-аут случайно короткий (извините, я не знаю значение по умолчанию … google или установите высокое значение для тестирования. Пожалуйста, в вашем settings.py поставьте DEBUG=True и вызовите свою страницу. Ошибки? Пожалуйста, напишите urls.py settings.py и views.py

3. Здравствуйте, так получилось, что у Apache возникла проблема с текущей версией numpy. Я не совсем понимаю, почему у него есть проблема, поскольку запуск python manage.py runserver не приводит к ошибкам. Но да, в настоящее время установка numpy 1.16.0 делает свое дело. Еще раз спасибо.

Ответ №2:

У меня такая же ошибка после установки библиотеки scipy и использования ее в некотором скрипте в django. Я обнаружил, что некоторые библиотеки, такие как «numpy» и «scipy», работают только в главном интерпретаторе Python, и вам нужно заставить WSGI запускаться в глобальной группе приложений, чтобы запустить его. Добавление этой строки в мой файл conf работает для меня.

 WSGIApplicationGroup %{GLOBAL}
 

Комментарии:

1. это сработало для меня — большое вам спасибо