gpt4 book ai didi

python - 当发送给它的查询太长时,uWSGI 似乎会中断

转载 作者:太空宇宙 更新时间:2023-11-03 17:25:30 26 4
gpt4 key购买 nike

我最近为我的 Flask 应用程序切换到了 uWSGI,并且大部分情况都进展顺利。经常出现的一个奇怪现象是我会收到一堆以下形式的警告:

[WARNING] unable to add HTTP_X_FORWARDED_PROTO=https to uwsgi packet, consider increasing buffer size
[WARNING] unable to add HTTP_X_FORWARDED_PORT=443 to uwsgi packet, consider increasing buffer size
[WARNING] unable to add HTTP_X_FORWARDED_PORT=443 to uwsgi packet, consider increasing buffer size
[WARNING] unable to add HTTP_X_FORWARDED_PORT=443 to uwsgi packet, consider increasing buffer size
[WARNING] unable to add HTTP_X_FORWARDED_PORT=443 to uwsgi packet, consider increasing buffer size
[WARNING] unable to add HTTP_USER_AGENT=Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36 to uwsgi packet, consider increasing buffer size

遵循足够多的内容,我会得到这些:

Tue Sep 15 16:57:48 2015 - [DANGER] async queue is full !!!
Tue Sep 15 16:57:49 2015 - [DANGER] async queue is full !!!
Tue Sep 15 16:57:50 2015 - [DANGER] async queue is full !!!
Tue Sep 15 16:57:51 2015 - [DANGER] async queue is full !!!
Tue Sep 15 16:57:52 2015 - [DANGER] async queue is full !!!
Tue Sep 15 16:57:53 2015 - [DANGER] async queue is full !!!
Tue Sep 15 16:57:54 2015 - [DANGER] async queue is full !!!
Tue Sep 15 16:57:55 2015 - [DANGER] async queue is full !!!
Tue Sep 15 16:57:56 2015 - [DANGER] async queue is full !!!
Tue Sep 15 16:57:57 2015 - [DANGER] async queue is full !!!

此时我的服务器将停止响应请求,直到重新启动。

这往往是有人向服务器发送一堆虚假的长废话查询,例如:

GET /autocomplete/5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555

我在 Nginx 后面运行 uWSGI。这是我的配置:

[uwsgi]
socket = 0.0.0.0:1234
protocol = http
wsgi-file = path/to/wsgi_server.py
callable = my_app
processes = 1
threads = 1
enable-threads = true
single-interpreter = true
async = 15
uGreen = true
logto = /path/to/my_log_file.log

有什么想法吗?

注意:我无法增加进程或线程数,因为我要为每个线程加载一个非常大的数据结构,该数据结构会占用太多内存而无法多次加载。

最佳答案

您面临两个不同的问题。

uWSGI 的固定缓冲区大小可以保护您免受那些“废话”请求的影响,因此这基本上可以自行修复。

完全异步队列的问题是由于您将堆栈设置为异步模式 + ugreen 而产生的,我非常怀疑您使用 uwsgi 异步 api 重写了您的 Flask 应用程序。

请记住,要利用异步模式(包括 gevent),您需要有一个 100% 非阻塞的应用程序,99.9999999% 是不够的。

只是滥用uWSGI牛功能来共享大数据结构并增加进程数量。你绝对可以使用多个线程而无需更改你的应用程序,除非你为每个线程重新初始化你的数据结构(我什至不确定这是一件容易的事情,因为uWSGI本身无法做到这一点)

关于python - 当发送给它的查询太长时,uWSGI 似乎会中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32637400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com