django 里 view 函数竟然是单线程的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
peter999
V2EX    问与答

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

  • &nsp;
  •   peter999 2016-06-14 11:08:28 +08:00 4391 次点击
    这是一个创建于 3406 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    django 框架本身是支持多线程的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2648 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 02:19 PVG 10:19 LAX 19:19 JFK 22:19
    Do have faith in what you're doing.
    ubao 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