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

发布于 2022-09-02 20:59:16 字数 958 浏览 19 评论 0

服务器阻塞与非阻塞问题。

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文