web-dev-qa-db-fra.com

uwsgi taille de bloc de requête invalide

Je cours uwsgi en mode empereur

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

et obtenir cette erreur

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

Que faire?? J'ai aussi essayé -b 32768

118
Kartik Rokde

J'ai également rencontré le même problème tout en suivant un tutoriel. Le problème était que je définissais l'option socket = 0.0.0.0:8000 au lieu de http = 0.0.0.0:8000. socket option destinée à être utilisée avec un routeur tiers (nginx par exemple), lorsque http option est définie, uwsgi peut accepter les demandes HTTP entrantes et les router par lui-même.

178
Palasaty

La bonne solution consiste à ne pas passer au protocole HTTP. Il vous suffit d’augmenter la taille de la mémoire tampon dans les paramètres uWSGI.

buffer-size=32768

ou en mode ligne de commande:

-b 32768

Extrait de la documentation officielle:

Par défaut, uWSGI alloue un très petit tampon (4096 octets) pour les en-têtes de chaque requête. Si vous commencez à recevoir une "taille de bloc de requête non valide" dans vos journaux, cela peut signifier que vous avez besoin d'un tampon plus important. Augmentez-le (jusqu’à 65535) avec l’option buffer-size.

Si vous recevez "21573" comme taille de bloc de la requête dans vos journaux, cela signifie peut-être que vous utilisez le protocole HTTP pour parler avec une instance qui utilise le protocole uwsgi. Ne fais pas ça.

Depuis ici: https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html

112
Farsheed

Je pourrais résoudre ce problème en ajoutant --protocol = http à uwsgi

14
ajamardo

J'ai rencontré le même problème en essayant de l'exécuter sous nginx et je suivais la documentation ici . Il est important de noter qu'une fois que vous avez basculé sur nginx, vous devez vous assurer que vous n'essayez pas d'accéder à l'application sur le port spécifié par le paramètre --socket, mais plutôt sur le port "listen" du fichier nginx.conf. Bien que votre problème soit décrit différemment, le titre correspond exactement au problème que j’avais.

13
Paulo SantAnna

Cette erreur est affichée lorsque le serveur uWSGI utilise le protocole uwsgi et que l’on tente d’y accéder via le protocole http avec le navigateur curl ou directement. Si vous le pouvez, essayez de configurer votre serveur uWSGI pour utiliser le protocole http afin de pouvoir y accéder via un navigateur Web ou curl.

Si vous ne pouvez pas (ou ne voulez pas) le changer, vous pouvez utiliser un proxy inverse (par exemple, nginx) devant le serveur uWSGI local ou distant, voir https: // uwsgi-docs .readthedocs.org/fr/latest/Nginx.html

Si cela vous semble trop de travail, essayez de uwsgi-tools python:

$ pip install uwsgi-tools

$ uwsgi_curl 10.0.0.1:3030

Il existe également un serveur proxy inverse simple uwsgi_proxy si vous devez accéder à vos applications via un navigateur Web, etc. Voir la réponse plus complète https://stackoverflow.com/a/32893520/179581

6
Andrei