浏览器请求同一服务器api为什么会阻塞?
服务器阻塞与非阻塞问题。
case1:
参考:http://www.tuicool.com/articles/36ZzA3
第一个阻塞例子,技术:tornado, api请求get,其中sleep 5秒。
结果:
同一个浏览器中不同标签调用此接口,阻塞
不同浏览器中调用此接口,阻塞
case2:
get加入装饰器:
@tornado.web.asynchronous
@tornado.gen.coroutine
结果:
同一个浏览器中不同标签页调用此接口,阻塞。
不同浏览器中调用此接口,不阻塞
同时发现【现象1】:
同一个浏览器中不同标签页只要是阻塞状态,总是相差5秒。
(比如,在一个标签页请求开始后1秒,在另一个标签页中请求,结果两个请求返回时间差依然是5秒,而不是6秒)(这个很容易理解)
case3:
使用django:
结果:
同一个浏览器中不同标签页调用此接口,阻塞。
不同浏览器中调用此接口,不阻塞。
同时也发现【现象1】。
case4:
使用django+gunicorn(gevent异步并发方式),开启4个进程。
和case3的情况一样。
同时了解到:
浏览器在访问服务器的时候,服务器有客户端的连接数量限制。(一般为5个,但是不影响)
浏览器在访问服务端的静态资源时候,会有资源访问限制(同一资源不会多次访问),这个也不影响这个现象。
疑问:
1,同一个浏览器请求同一个服务器api只能会阻塞?
2,django+gunicorn并发方式为什么依然无法解决同浏览器请求服务器api阻塞问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论