J'exécute uwsgi en mode empereur.
uwsgi --emperor /path/to/vassals/ --buffer-size=32768
et j'obtiens cette erreur
invalid request block size: 21327 (max 4096)...skip
Que faire ? J'ai aussi essayé -b 32768
.
J'exécute uwsgi en mode empereur.
uwsgi --emperor /path/to/vassals/ --buffer-size=32768
et j'obtiens 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 en suivant un tutoriel. Le problème est que j'ai défini l'option socket = 0.0.0.0:8000
au lieu de http = 0.0.0.0:8000
. socket
destinée à être utilisée avec un routeur tiers (nginx par exemple), alors que lorsque l'option http
est activée, uwsgi peut accepter les requêtes HTTP entrantes et les acheminer par lui-même.
La bonne solution n'est pas de passer au protocole HTTP. Il suffit d'augmenter la taille du tampon dans les paramètres de uWSGI.
buffer-size=32768
ou en mode ligne de commande :
-b 32768
Citation 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 le message "invalid request block size" dans vos journaux, cela peut signifier que vous avez besoin d'un tampon plus grand. Augmentez-la (jusqu'à 65535) avec l'option buffer-size.
Si vous obtenez '21573' comme taille de bloc de requête dans vos journaux, cela peut signifier que vous utilisez le protocole HTTP pour parler avec une instance du protocole uwsgi. Ne faites pas cela.
D'ici : https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
J'ai rencontré le même problème en essayant de l'exécuter sous nginx et j'ai suivi la docs aquí . Il est important de noter qu'une fois que vous passez à 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 le port "listen" dans nginx.conf. Bien que votre problème soit décrit différemment, le titre correspond exactement au problème que j'ai rencontré.
Cette erreur est affichée lorsque le serveur uWSGI utilise uwsgi
et on essaie d'y accéder via http
protocole par curl
ou le navigateur web directement. Si vous le pouvez, essayez de configurer votre serveur uWSGI pour utiliser http
de sorte que vous pouvez y accéder par le biais d'un navigateur web ou de curl.
Si vous ne pouvez pas (ou ne voulez pas) le modifier, vous pouvez utiliser un proxy inverse (par ex. nginx
) devant le serveur uWSGI local ou distant, voir https://uwsgi-docs.readthedocs.org/en/latest/Nginx.html
Si vous avez l'impression que cela représente trop de travail, essayez de uwsgi-tools
paquet 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 à votre/vos application(s) via un navigateur web, etc. Voir la réponse plus détaillée https://stackoverflow.com/a/32893520/179581
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.