我在皇帝模式下运行uwsgi
uwsgi --emperor /path/to/vassals/ --buffer-size=32768
并得到这个错误
invalid request block size: 21327 (max 4096)...skip
该怎么办??我也试过-b 32768
k
对我不起作用。必须提供完整的号码。在此处可以使用的格式上找不到任何指针。
我在皇帝模式下运行uwsgi
uwsgi --emperor /path/to/vassals/ --buffer-size=32768
并得到这个错误
invalid request block size: 21327 (max 4096)...skip
该怎么办??我也试过-b 32768
k
对我不起作用。必须提供完整的号码。在此处可以使用的格式上找不到任何指针。
Answers:
在阅读一些教程时,我也遇到了同样的问题。问题是我设置了选项socket = 0.0.0.0:8000
而不是http = 0.0.0.0:8000
。
socket
该选项旨在与某些第三方路由器(例如nginx)一起使用,而http
设置了该选项时,uwsgi可以接受传入的HTTP请求并自行路由。
socket = /tmp/myapp.sock
或http = 0.0.0.0:8000
或其他取决于您的需求。
正确的解决方案是不要切换到HTTP协议。您只需要在uWSGI设置中增加缓冲区大小即可。
buffer-size=32768
或在命令行模式下:
-b 32768
引用官方文档:
默认情况下,uWSGI为每个请求的标头分配一个很小的缓冲区(4096字节)。如果您开始在日志中收到“无效的请求块大小”,则可能意味着您需要更大的缓冲区。使用buffer-size选项将其增加(最多65535)。
如果您在日志中收到“ 21573”作为请求块大小,则可能意味着您正在使用HTTP协议与使用uwsgi协议的实例进行通信。不要这样
从这里: https //uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
http-socket
这里使用。
uwsgi
协议,那么您可能还会收到与OP相同的错误
http-socket
。即使缓冲区大小增加,其他所有内容都将显示“ 502 Bad Gateway”。
我在尝试在nginx下运行它时遇到了同样的问题,并在这里关注文档。重要的是要注意,一旦切换到nginx,就必须确保没有尝试通过--socket参数指定的端口访问应用程序,而是尝试访问nginx.conf中的“监听”端口。尽管您对问题的描述有所不同,但标题与我遇到的问题完全匹配。
当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
uwsgi_proxy
如果您需要通过Web浏览器等访问您的应用程序,则还有一个简单的反向代理服务器。请查看更多扩展的答案https://stackoverflow.com/a/32893520/179581
我也有同样的问题;所以我做到了...使用UWSGI + DJANGO + NGINX + REACT +
1-nano /etc/uwsgi/sites/app_plataform.ini [uwsgi]
DJANGO_SETTINGS_MODULE = app_plataform.settings env = DJANGO_SETTINGS_MODULE settings.configure()
chdir = / home / app_plataform home = / root / app_plataform模块= prometheus_plataform.wsgi:应用程序
主=真实进程= 33缓冲区大小= 32768
套接字= /home/app_plataform/app_plataform.sock chmod-socket = 777真空= true
2-对Nginx ...用户www-data进行严重的性能升级;
worker_processes自动;worker_processes 4; pid /run/nginx.pid; 包括/etc/nginx/modules-enabled/*.conf;
事件{worker_connections 4092; multi_accept on; }
http {##升级配置
client_body_buffer_size 16K; client_header_buffer_size 16k; client_max_body_size 32m; #large_client_header_buffers 2 1k;
client_body_timeout 12; client_header_timeout 12; keepalive_timeout 15; send_timeout 10; access_log关闭;
## # 基本设置 ##
发送文件; tcp_nopush on; tcp_nodelay; #keepalive_timeout 65; types_hash_max_size 2048; server_tokens关闭;
server_names_hash_bucket_size 64; #server_name_in_redirect关闭;
包括/etc/nginx/mime.types; default_type应用程序/八位字节流;
###SSL设置##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #删除SSLv3,参考:POODLE ssl_prefer_server_ciphers on;
###记录设置##
access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log;
###Gzip设置##
gzip on; gzip_comp_level 2; gzip_min_length 1000; gzip_proxied
过期的无缓存无存储私有身份验证;gzip_types文本/普通应用程序/ x-javascript文本/ xml文本/ css应用程序/ xml; gzip_vary on;#gzip_proxied任何;#gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; #gzip_types text / plain text / css application / json application / javascript text / xml application / xml application / xml + rss text / javascript;
###虚拟主机配置##
包括/etc/nginx/conf.d/ .conf; 包括/ etc / nginx / sites-enabled / ; }
3-然后...重新启动服务或reebot服务器...
systemctl重新启动uwsgi和systemctl重新启动nginx