首页 > 浏览器请求同一服务器api为什么会阻塞?

浏览器请求同一服务器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阻塞问题?
 
【热门文章】
【热门文章】