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
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.
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
Je pourrais résoudre ce problème en ajoutant --protocol = http à uwsgi
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.
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