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
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.
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
Ich könnte das Problem beheben, indem ich --protocol = http zum uwsgi hinzufüge
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.
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