django 里 view 函数竟然是单线程的? - V2EX
peter999

django 里 view 函数竟然是单线程的?

  •  
  •   peter999 Jun 14, 2016 4770 views
    This topic created in 3643 days ago, the information mentioned may be changed or developed.

    例如我在 views.py 里定义了 a 和 b 两个函数,内部都循环 sleep 十秒,通过 url 我可以同时访问 a 和 b ,但是如果我同时打开两个 a 页面,那么第二个访问要等第一个访问结束后才能开始。 这样的话,如果一个页面,有类似于 mysql 这种比较消耗 io 的连接,后面的访问者岂不是要等前面的访问者结束后才能打开页面? 大家的 django 也是这样的吗,还是设置某些参数可以实现同一个函数的多线程

    8 replies    2016-06-14 14:10:59 +08:00
    jugelizi
        1
    jugelizi  
       Jun 14, 2016   1
    你试试分别在两个浏览器里访问呢
    而不是在一个浏览器打开两个标签
    peter999
        2
    peter999  
    OP
       Jun 14, 2016
    @jugelizi 谢谢,这是 chrome 浏览器的 bug ,我换了 ie ,同时打开两个 ur 无此问题,又长见识了
    tairan2006
        3
    tairan2006  
       Jun 14, 2016   1
    python 世界不喜欢多线程…多进程才是王道啊。
    peter999
        4
    peter999  
    OP
       Jun 14, 2016
    @tairan2006 已确定是 chrome 浏览器的问题
    mahone3297
        5
    mahone3297  
       Jun 14, 2016
    这可能不算 bug ,可能算是 feature ,故意这样设计的。
    你每次打开, active 的,应该只有一个 tab ,所以 chrome 觉得,只处理当前 active 的 tab ,其他后台 tab ,不执行或者缓慢执行,避免占用资源。我使用的时候,也有碰到 lz 说的情况。
    xuwenmang
        6
    xuwenmang  
       Jun 14, 2016
    @tairan2006
    linux 世界不喜欢多线程…多进程才是王道啊。
    xxxcat
        7
    xxxcat  
       Jun 14, 2016
    大概是 chrome 会复用网络连接的原因吧,我用 chrome 做测试偶尔发现对同一个网站,即使开多个 tab 也不一定会增加连接数, django 可能同一个连接会使用固定的线程处理,所以你的两个 a 请求实际上交给了同一个线程,就表现为串行了。
    就像 5 楼说的,从节省资源提高效率角度看, chrome 这个特性应该不是 bug 而是 feature 。
    tabris17
        8
    tabris17  
       Jun 14, 2016   1
    和 django 无关,你要看 wsgi 容器的实现是多线程还是多进程

    django 框架本身是支持多线程的
    About     Help     Advertise     Blog     API     FAQ     Solana     904 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 20:11 PVG 04:11 LAX 13:11 JFK 16:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86