uwsgi недопустимый размер блока запроса


Я запускаю uwsgi в режиме императора

uwsgi --emperor /path/to/vassals/ --buffer-size=32768

и получаю эту ошибку

invalid request block size: 21327 (max 4096)...skip

Что делать?? Я тоже пробовал -b 32768

5 103

5 ответов:

Я также столкнулся с той же проблемой, следуя некоторому учебнику. Проблема была в том, что я установил опцию socket = 0.0.0.0:8000 вместо http = 0.0.0.0:8000. socket опция предназначена для использования с некоторым сторонним маршрутизатором (например, nginx), а когда http опция установлена uwsgi может принимать входящие HTTP-запросы и маршрутизировать их самостоятельно.

правильное решение - не переключаться на протокол HTTP. Вам просто нужно увеличить размер буфера в настройках uWSGI.

buffer-size=32768

или в режиме командной строки:

-b 32768

цитата из официальной документации:

по умолчанию uWSGI выделяет очень маленький буфер (4096 байт) для заголовков каждого запроса. Если вы начинаете получать "недопустимый размер блока запроса" в своих журналах, это может означать, что вам нужно больше буфер. Увеличьте его (до 65535) с помощью параметра размер буфера.

Если вы получаете’ 21573 ' в качестве размера блока запроса в ваших журналах, это может означать, что вы используете протокол HTTP для разговора с экземпляром, говорящим по протоколу uwsgi. Не делай этого.

отсюда:https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html

Я столкнулся с той же проблемой, пытаясь запустить его под nginx и был после документы здесь. Важно отметить, что как только вы переключитесь на nginx, вы должны убедиться, что вы не пытаетесь получить доступ к приложению на порту, указанном параметром --socket, а скорее к порту "listen" в nginx.конф. Хотя ваша проблема описана по-разному, название соответствует именно той проблеме, которая у меня была.

Я мог бы исправить это добавление --protocol=http к uwsgi

эта ошибка отображается, когда сервер uWSGI использует uwsgi протокол и один пытается получить к нему доступ через http протокола curl или веб-браузер напрямую. Если вы можете, попробуйте настроить ваш сервер uWSGI для использования http протокол, так что вы можете получить доступ к нему через веб-браузер или завиток.

в случае если вы не можете (или не хотите) изменить его, вы можете использовать обратный прокси-сервер (например,nginx) перед локальным или удаленным сервером uWSGI см. http://uwsgi-docs.readthedocs.org/en/latest/Nginx.html

если это кажется слишком много работы, попробуйте uwsgi-tools пакет python:

$ pip install uwsgi-tools

$ uwsgi_curl 10.0.0.1:3030

существует также простой обратный прокси-сервер uwsgi_proxy если вам нужно получить доступ к вашим приложениям через веб-браузер и т. д. Смотрите более развернутый ответ https://stackoverflow.com/a/32893520/179581