皇帝モードでuwsgiを実行しています
uwsgi --emperor /path/to/vassals/ --buffer-size=32768
このエラーが発生する
invalid request block size: 21327 (max 4096)...skip
何をすべきか?? -b 32768も試しました
いくつかのチュートリアルを実行中に、同じ問題にぶつかりました。問題は、socket = 0.0.0.0:8000
ではなくhttp = 0.0.0.0:8000
オプションを設定したことです。 socket
オプションは、サードパーティのルーター(nginxなど)で使用することを目的としていますが、http
オプションが設定されている場合、uwsgiは着信HTTPリクエストを受け入れ、それを単独でルーティングできます。
正しい解決策は、HTTPプロトコルに切り替えることではありません。 uWSGI設定でバッファサイズを増やす必要があります。
buffer-size=32768
またはコマンドラインモードで:
-b 32768
公式文書からの引用:
デフォルトでは、uWSGIは各リクエストのヘッダーに非常に小さなバッファー(4096バイト)を割り当てます。ログで「無効な要求ブロックサイズ」の受信を開始した場合、より大きなバッファが必要になる可能性があります。 buffer-sizeオプションを使用して、それを増やします(最大65535)。
ログのリクエストブロックサイズとして「21573」を受け取った場合は、HTTPプロトコルを使用して、uwsgiプロトコルを話すインスタンスと会話している可能性があります。これをしないでください。
ここから: https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
--protocol = httpをuwsgiに追加して修正できました
私はnginxの下でそれを実行しようとして同じ問題に遭遇し、ドキュメントをフォローしていました here 。 nginxに切り替えたら、-socket paramで指定されたポートではなく、nginx.confの「listen」ポートでアプリにアクセスしようとしていることを確認する必要があることに注意することが重要です。問題の説明は異なりますが、タイトルは私が抱えていた問題と完全に一致します。
このエラーは、uWSGIサーバーがuwsgi
プロトコルを使用しており、http
またはWebブラウザーでcurl
プロトコルを介して直接アクセスしようとすると表示されます。可能であれば、http
プロトコルを使用するようにuWSGIサーバーを構成して、Webブラウザーまたはcurlを介してアクセスできるようにしてください。
変更できない場合(または変更したくない場合)は、ローカルまたはリモートのuWSGIサーバーの前でリバースプロキシ(たとえばnginx
)を使用できます。 https:// uwsgi-docsを参照してください。 readthedocs.org/en/latest/Nginx.html
あまりにも手間がかかりそうな場合は、uwsgi-tools
pythonパッケージを試してください。
$ pip install uwsgi-tools
$ uwsgi_curl 10.0.0.1:3030
Webブラウザーなどを介してアプリケーションにアクセスする必要がある場合は、単純なリバースプロキシサーバーuwsgi_proxy
もあります。詳細な回答を参照してください https://stackoverflow.com/a/32893520/179581