Я поддерживаю веб-приложение с API-интерфейсом Flask, который возвращает специальные коды ошибок. API работает через Apache и модуль WSGI в режиме демона.Невозможно отключить WSGIErrorOverride
Я включил инструкцию для Apache conf
в API (который должен быть по умолчанию, но я все равно включил его).
Однако в любое время приложение Flask возвращает код пользовательской ошибки (они работают при запуске приложения с использованием встроенного сервера), Apache отправляет ошибку 500. Как я могу это предотвратить?
Вы уверены, что ваше приложение не врезаться при попытке вернуть пользовательский код ошибки? Проверьте журнал ошибок вашего сервера. – duskwuff
@duskwuff Вы правы, на самом деле все нормально работает, когда я сам установил код состояния (_e.g._ 'return Hello World", 401' в представлении Flask). Что происходит здесь, так это то, что мой пакет безопасности (Flask-JWT) генерирует исключение, которое каким-то образом захватывается Flask при запуске встроенного сервера, но не при работе в Apache + WSGI. Из того, что я вижу в трассировке стека, возможно, что виноват другой пакет Flasf-RESTful. Сегодня я попробую обходить его позже. – arnaudrg
Вы можете проверить, что действительно выходит из вашего приложения WSGI, используя https://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Tracking_Request_and_Response. Это точно сообщит вам, будет ли страница с ошибкой 500 поступать из вашего приложения. Как вы сказали, Apache/mod_wsgi не должен касаться вашего ответа. Apache/mod_wsgi должен генерировать только 500 страниц ошибок, если что-то пошло не так в Apache или mod_wsgi, или ваш ответ сам по себе был как-то сломан, хотя я даже не могу вспомнить, где mod_wsgi может сделать последнее. –