V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
013231
V2EX  ›  Flask

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

  •  
  •   013231 · 2012-07-06 20:39:32 +08:00 · 3454 次点击
    这是一个创建于 4305 天前的主题,其中的信息可能已经有所发展或是发生改变。


    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的請求分配到不同線程上去?
    2 条回复    1970-01-01 08:00:00 +08:00
    reorx
        1
    reorx  
       2012-07-06 22:46:22 +08:00
    这就是阻塞(blocking)的特性,同一时间同一个url,只能对一个请求进行处理。就像一个窗口柜台,每次只能办理一个业务,而请求就像排队等候的人。

    Flask我不了解,但Tornado自带对非阻塞请求处理的支持。似乎对于大部分web框架来说这一点都是软肋。
    013231
        2
    013231  
    OP
       2012-07-11 01:40:08 +08:00   ❤️ 1
    這個問題已經解決了. 我的推斷是錯誤的, 被阻塞的不是服務器, 是瀏覽器. 根據我的測試:
    Chrome瀏覽器中, 如果兩個請求的協議\服務器\端口\路徑都相同, 那麼在前一個請求完成前, 後一個請求根本不會發出去.
    Firefox瀏覽器中, 如果兩個請求的協議\服務器\端口\路徑\參數都相同, 那麼在前一個請求完成前, 後一個請求根本不會發出去.
    Safari瀏覽器中未發現阻塞現象.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2839 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 07:12 · PVG 15:12 · LAX 00:12 · JFK 03:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.