我有一个运行的uWSGI 2.0.12 uwsgi服务器:
$ cat myt.py
import uwsgi
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
for i in xrange(100):
yield 'Hello, World %i<br>\n' % i
uwsgi.async_sleep(1)
$ uwsgi --uwsgi-socket 127.0.0.1:5423 --async 99 --ugreen --module myt
因此每个响应生成大约需要100秒,1行需要1秒。
如果我将--uwsgi-socket更改为--http-socket,那么当我在2个Chrome标签页中访问http://127.0.0.1:5423/时,它就可以正常工作:每一个标签中都会显示一个新行。
但是,我想保留--uwsgi-socket,我想添加一个代理,它将从HTTP转换为uwsgi。我决定使用uwsgi --http-to
作为此代理,我已经启动了2个代理:
$ uwsgi --uwsgi-socket 127.0.0.1:5423 --async 99 --ugreen --module myt
$ uwsgi --http 127.0.0.1:4114 --http-to '127.0.0.1:5423' --master
$ uwsgi --http 127.0.0.1:5115 --http-to '127.0.0.1:5423' --master
当我访问http://127.0.0.1:4114/时,它运行正常:它开始在每秒显示行。但是,当我在新选项卡中访问同一链接时,100秒内没有任何反应(直到之前的请求完成),然后才会出现行开始。因此,端口5423上的代理服务器或uwsgi服务器无法同时处理多个请求。要确认代理商无法访问,我访问http://127.0.0.1:4114/并同时在另一个标签页中访问http://127.0.0.1:5115/,这两行开始显示。因此,1个代理可以一次处理1个响应。
这不能并行工作:
$ uwsgi --http 127.0.0.1:5544 --master --http-workers 9 --http-events 99 --route='^/.* uwsgi:127.0.0.1:5423,0,0' --workers 9
我的问题:如何配置uwsgi --http-to
,以便一次可以处理至少100个回复?
我已尝试指定--threads 100
,--processes 100
,--async 100 --ugreen
,--http-workers 9
,--http-events 99
或多次指定--http-to
标记相同的命令行,但这些都没有帮助。
现在我对NGINX等替代代理软件不感兴趣,或者让我的uwsgi --uwsgi-socket
实例直接理解HTTP协议。我需要uwsgi --http-to
的其他命令行标记,以便能够同时处理多个响应。
答案 0 :(得分:0)
http服务器的所有设置都以http
为前缀。所有选项的列表为here
你需要的是http-workers
选项,告诉uWSGI为HTTP请求处理产生多个worker