webentwicklung-frage-antwort-db.com.de

uwsgi ungültige Anforderungsblockgröße

Ich lasse uwsgi im Kaisermodus laufen

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

und diesen Fehler bekommen

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

Was ist zu tun?? Ich habe auch versucht -b 32768

118
Kartik Rokde

Ich bin auch auf dasselbe Problem gestoßen, als ich einem Tutorial folgte. Das Problem war, dass ich die Option socket = 0.0.0.0:8000 anstatt http = 0.0.0.0:8000. Die Option socket ist für die Verwendung mit Routern von Drittanbietern vorgesehen (z. B. nginx). Wenn die Option http festgelegt ist, kann uwsgi eingehende HTTP-Anforderungen akzeptieren und selbst weiterleiten.

178
Palasaty

Die richtige Lösung ist, nicht zum HTTP-Protokoll zu wechseln. Sie müssen nur die Puffergröße in den uWSGI-Einstellungen erhöhen.

buffer-size=32768

oder im Kommandozeilenmodus:

-b 32768

Zitat aus amtlicher Dokumentation:

Standardmäßig weist uWSGI den Headern jeder Anforderung einen sehr kleinen Puffer (4096 Byte) zu. Wenn Sie in Ihren Protokollen die Meldung "Ungültige Blockgröße für Anforderungen" erhalten, benötigen Sie möglicherweise einen größeren Puffer. Erhöhen Sie ihn (bis zu 65535) mit der Option für die Puffergröße.

Wenn Sie in Ihren Protokollen "21573" als Anforderungsblockgröße erhalten, kann dies bedeuten, dass Sie das HTTP-Protokoll verwenden, um mit einer Instanz zu sprechen, die das uwsgi-Protokoll spricht. Tu das nicht.

Von hier aus: https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html

112
Farsheed

Ich könnte das Problem beheben, indem ich --protocol = http zum uwsgi hinzufüge

14
ajamardo

Ich bin auf dasselbe Problem gestoßen, als ich versucht habe, es unter nginx auszuführen, und habe die Dokumente befolgt hier . Es ist wichtig zu beachten, dass Sie nach dem Wechsel zu nginx nicht versuchen müssen, über den durch den Parameter --socket angegebenen Port auf die App zuzugreifen, sondern über den Port "listen" in der Datei nginx.conf. Obwohl Ihr Problem anders beschrieben ist, entspricht der Titel genau dem Problem, das ich hatte.

13
Paulo SantAnna

Dieser Fehler wird angezeigt, wenn der uWSGI-Server das Protokoll uwsgi verwendet und versucht, über das Protokoll http von curl oder über einen Webbrowser direkt darauf zuzugreifen. Wenn möglich, versuchen Sie, Ihren uWSGI-Server für die Verwendung des Protokolls http zu konfigurieren, damit Sie über einen Webbrowser oder Curl darauf zugreifen können.

Falls Sie es nicht ändern können (oder möchten), können Sie einen Reverse-Proxy (z. B. nginx) vor dem lokalen oder entfernten uWSGI-Server verwenden, siehe https: // uwsgi-docs) .readthedocs.org/de/latest/Nginx.html

Wenn es sich nach zu viel Arbeit anfühlt, versuchen Sie es mit uwsgi-tools python package:

$ pip install uwsgi-tools

$ uwsgi_curl 10.0.0.1:3030

Es gibt auch einen einfachen Reverse-Proxy-Server uwsgi_proxy wenn Sie auf Ihre Anwendung (en) über einen Webbrowser usw. zugreifen müssen. Weitere Informationen finden Sie in der erweiterten Antwort https://stackoverflow.com/a/32893520/179581

6
Andrei