Flask中, 針對同一個URL的請求只能順序執行, 不能並發執行?

2012-07-06 20:39:32 +08:00
 013231
http://gist.github.com/3059922

00:00秒請求/a
00:01秒請求/b
00:02秒請求/c
會在
00:10秒收到/a的回應
00:11秒收到/b的回應
00:12秒收到/c的回應
然而如果在
00:00秒請求/a
00:01秒請求/a
00:02秒請求/a
會在
00:10秒收到/a的回應
00:20秒收到/a的回應
00:30秒收到/a的回應
也就是說, 對同一個URL的請求是在同一個線程上執行的. 有沒有辦法把對同一個URL的請求分配到不同線程上去?
3462 次点击
所在节点    Flask
2 条回复
reorx
2012-07-06 22:46:22 +08:00
这就是阻塞(blocking)的特性,同一时间同一个url,只能对一个请求进行处理。就像一个窗口柜台,每次只能办理一个业务,而请求就像排队等候的人。

Flask我不了解,但Tornado自带对非阻塞请求处理的支持。似乎对于大部分web框架来说这一点都是软肋。
013231
2012-07-11 01:40:08 +08:00
這個問題已經解決了. 我的推斷是錯誤的, 被阻塞的不是服務器, 是瀏覽器. 根據我的測試:
Chrome瀏覽器中, 如果兩個請求的協議\服務器\端口\路徑都相同, 那麼在前一個請求完成前, 後一個請求根本不會發出去.
Firefox瀏覽器中, 如果兩個請求的協議\服務器\端口\路徑\參數都相同, 那麼在前一個請求完成前, 後一個請求根本不會發出去.
Safari瀏覽器中未發現阻塞現象.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/41622

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX