我在皇帝模式下运行uwsgi
uwsgi --emperor /path/to/vassals/ --buffer-size=32768
Run Code Online (Sandbox Code Playgroud)
并得到这个错误
invalid request block size: 21327 (max 4096)...skip
Run Code Online (Sandbox Code Playgroud)
该怎么办??我也试过-b 32768
Pal*_*aty 186
我在遵循一些教程的同时遇到了同样的问题.问题是我设置了选项socket = 0.0.0.0:8000
而不是http = 0.0.0.0:8000
.
socket
旨在与某些第三方路由器(例如nginx)一起使用的http
选项,而当设置选项时,uwsgi可以接受传入的HTTP请求并自行路由它们.
Far*_*eed 122
正确的解决方案是不切换到HTTP协议.您只需要在uWSGI设置中增加缓冲区大小.
Run Code Online (Sandbox Code Playgroud)buffer-size=32768
或者在命令行模式下:
Run Code Online (Sandbox Code Playgroud)-b 32768
从官方文档引用:
默认情况下,uWSGI为每个请求的标头分配一个非常小的缓冲区(4096字节).如果您开始在日志中收到"无效的请求块大小",则可能意味着您需要更大的缓冲区.使用buffer-size选项增加它(最多65535).
如果您在日志中收到"21573"作为请求块大小,则可能意味着您正在使用HTTP协议与说出uwsgi协议的实例通话.不要这样做.
从这里:https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
aja*_*rdo 14
我可以解决它添加--protocol = http到uwsgi
当uWSGI服务器使用uwsgi
协议并且尝试通过http
协议curl
或通过Web浏览器直接访问它时,将显示此错误。如果可以,请尝试将uWSGI服务器配置为使用http
协议,以便您可以通过Web浏览器或curl访问它。
万一您不能(或不想)更改它,可以nginx
在本地或远程uWSGI服务器之前使用反向代理(例如),请参阅https://uwsgi-docs.readthedocs.org/en/latest/Nginx .html
如果感觉工作太多,请尝试使用uwsgi-tools
python包:
$ pip install uwsgi-tools
$ uwsgi_curl 10.0.0.1:3030
Run Code Online (Sandbox Code Playgroud)
uwsgi_proxy
如果您需要通过Web浏览器等访问应用程序,则还有一个简单的反向代理服务器。请参阅更多扩展的答案/sf/answers/2302546431/
正如文档的另一条评论所指出的:
\n\n\n\n\n如果您在日志中收到 \xe2\x80\x9821573\xe2\x80\x99 作为请求块大小,则可能意味着您正在使用 HTTP 协议与使用 uwsgi 协议的实例进行通信。不要\xe2\x80\x99 这样做。
\n
如果您使用 Nginx,如果您有以下配置(或类似的奇怪配置),就会发生这种情况:
\n\nproxy_pass http://unix:/path/to/socket.sock\n
Run Code Online (Sandbox Code Playgroud)\n\n这是与 uWSGI 进行 HTTP 对话(这使得它变得脾气暴躁)。相反,使用:
\n\nuwsgi_pass unix:/path/to/socket.sock;\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
60594 次 |
最近记录: |