python – 非阻塞并发wsgi服务器
发布时间:2020-12-16 21:31:07 所属栏目:Python 来源:网络整理
导读:我试图能够同时响应传入的Web请求,而处理请求包括相当长的IO调用.我打算使用gevent,因为它应该是“非阻塞的” 我发现的问题是,即使我有很多gevent线程,请求也会按顺序处理.由于某种原因,请求由单个绿色线程提供. 我有nginx(默认配置在这里我认为不相关),我也
我试图能够同时响应传入的Web请求,而处理请求包括相当长的IO调用.我打算使用gevent,因为它应该是“非阻塞的”
我发现的问题是,即使我有很多gevent线程,请求也会按顺序处理.由于某种原因,请求由单个绿色线程提供. 我有nginx(默认配置在这里我认为不相关),我也有uwsgi和简单的wsgi应用程序模拟IO阻塞调用gevent.sleep().他们来了: uwsgi.ini [uwsgi] chdir = /srv/website home = /srv/website/env module = wsgi:app socket = /tmp/uwsgi_mead.sock #daemonize = /data/work/zx900/mob-effect.mead/logs/uwsgi.log processes = 1 gevent = 100 gevent-monkey-patch wsgi.py import gevent import time from flask import Flask app = Flask(__name__) @app.route("/") def hello(): t0 = time.time() gevent.sleep(10.0) t1 = time.time() return "{1} - {0} = {2}".format(t0,t1,t1 - t0) 然后我同时(几乎)在我的浏览器中打开两个标签,这是我得到的结果: 1392297388.98 - 1392297378.98 = 10.0021491051 # first tab,processing finished at 1392297378.98 1392297398.99 - 1392297388.99 = 10.0081849098 # second tab,processing started at 1392297398.99 如您所见,首先调用阻止执行的视图.我错了什么? 解决方法
使用curl或除浏览器之外的任何其他内容发送请求,因为浏览器对每个站点或每个地址的同时连接数有限制.或使用两种不同的浏览器.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |