Усеченные или негабаритные заголовки ответов, полученные от процесса демона

Недавно я перенес приложение python django из дебианской системы в дистрибутив redhat. Приложение размещается с помощью httpd, mod_wsgi и работает в venv в процессе демона. По большим запросам я теперь получаю следующее сообщение об ошибке в файле журнала:

"Truncated or oversized response headers received from daemon process" 

Я никогда не испытывал ничего подобного, и Google не является ключевым здесь. Я проверил конфигурацию apache, но никакой конфиг не связан с заголовками ответов.

Моя конфигурация httpd.conf выглядит так (довольно стандартная):

WSGIPassAuthorization On
WSGIScriptAlias / /var/www/myapp/wsgi.py
WSGIDaemonProcess my.name python-path=/path/to/myapp/:/path/to/venv/lib/python2.7/site-packages display-name=%{GROUP}
WSGIProcessGroup my.name

Есть ли у любого гуру намек в каком направлении я должен смотреть?

Ответ 1

Оказалось, что это не настоящая проблема. Проблема лежала глубже, поскольку я сменил Каира на Каир-Коффи, и RSVG-Handler не смог разобраться с Контекст-Объектом, исходящим из Cffi. Нет моей проблемы с актом, у вас есть обновленная библиотека python, которая позволяет мне преобразовывать svg в png. Использование svg2png из CairoSVG не работает для меня. Я получаю

cairo возвращен CAIRO_STATUS_NO_MEMORY: из памяти

Ошибка, на которую я уверен, что она снова не говорит правду, и проблема лежит где-то в другом месте. Но давайте посмотрим.

Ответ 2

Код, используемый Apache mod_wsgi, применяет ограничение на размер одного заголовка ответа, возвращаемого из процессов режима демонов mod_wsgi. Это приведет к действительно загадочному сообщению об ошибке Apache, которое не указывает на проблему. Из памяти предыдущая ошибка:

Premature end of script headers

Предел размера также был жестко закодирован в Apache и не может быть изменен. Это вызвало проблемы для некоторых веб-приложений Python, таких как Keystone в OpenStack, который генерирует очень большие заголовки аутентификации.

В модуле mod_wsgi 4.1+ была удалена зависимость от кода Apache, и теперь предел становится настраиваемым. Сообщение об ошибке также более точно, как вы видели.

Максимальный размер заголовка по умолчанию для того, что возвращается из режима демона mod_wsgi, то есть имя и значение заголовка, составляет около 8192 байта. Вы можете переопределить это, используя параметр "размер заголовка-буфера" для WSGIDaemonProcess.

Можете ли вы указать, какое приложение и какой заголовок был настолько велик, что был достигнут предел, так как хотелось бы знать, какие другие веб-приложения Python, помимо Keystone, генерируют такие большие заголовки, если это обычно используемое приложение.

Вторая возможность, вытекающая из "усеченной" ссылки в этом сообщении, заключается в том, что ваш демон-процесс mod_wsgi разбился. Вы даже не говорите, что видели "ошибку сегментации" или подобное сообщение о том, что произошел сбой. Проверьте это и, если в это время есть другие сообщения в журнале ошибок, укажите, что они собой представляют, и можете рассматривать это как главную проблему.

Ответ 3

Недавно мы столкнулись с этой проблемой, и после нескольких дней энергичной угрызений совести и сильной головной боли мы обнаружили, что мы используем psycopg2-бинарный код в качестве зависимости от коннектора базы данных (я знаю, новичков)! В их документации прямо указано, что пакет не должен использоваться в производственной среде.

Мы добавили все остальные предложенные ответы, такие как добавление "WSGIApplicationGroup% {GLOBAL}" к нашим настройкам (которые мы сохранили), но все они в одиночку и вместе не решили проблему.

Мы также обнаружили, что другие библиотеки C, такие как numpy, вызывают проблемы.

Надеюсь, это поможет кому-нибудь когда-нибудь.

Django Webfaction & # 39; Тайм-аут при чтении заголовков ответов из процесса-демона & # 39;

http://initd.org/psycopg/docs/install.html#prerequisites

Ответ 4

У меня возникла проблема с этим на сервере CentOS 7 при развертывании Django с помощью httpd с mod_wsgi 4.5.4. Мне пришлось вернуться к использованию mod_wsgi 4.3.2, который решил мою проблему.

Ответ 5

Я установил filebeat, который изменил мою версию ssl, так что psycopy2 необходимо обновить, и ошибка была Усеченные или слишком большие заголовки ответа, полученные от процесса демона

Сделайте следующее: -

Удалите ваш пакет psycopy2 с помощью pip. Я использую pip3, потому что моя версия Python 3.6.8

sudo pip3 uninstall psycopg2

Переустановите psycopy2 с помощью pip.

sudo pip3 install psycopg2

До psycopg2-2.7.4 сейчас psycopg2-2.8.3

Ответ 6

У меня внезапно возникла такая же проблема после обновления. Следующее обновление устраняло проблему... Я запускаю arch, начиная с даты этого сообщения, версия WSGI в репо работает.

Ответ 7

В моем проекте Django (без каких-либо других сообщений об ошибке) у меня было то же сообщение об ошибке "Усеченные или негабаритные заголовки ответа, полученные от процесса-демона '...': /var/www/dev.audiocont.com/index.wsgi".

Моя ошибка состояла в том, что я изменил виртуальную среду и забыл адаптировать настройки Apache "dev.conf" к новому пути venv.