V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
myyou
V2EX  ›  Python

django 执行多请求的流程是什么?

  •  
  •   myyou · 2016-07-27 19:53:36 +08:00 · 6856 次点击
    这是一个创建于 3047 天前的主题,其中的信息可能已经有所发展或是发生改变。

    单进程的 django web 对于同一个 api 的多个请求,是单线程的顺序执行还是多线程的并发执行? 对于不同 api 的多个请求,是单线程的顺序执行还是多线程的并发执行?

    5 条回复    2016-07-28 10:10:14 +08:00
    zhuangzhuang1988
        1
    zhuangzhuang1988  
       2016-07-27 20:14:07 +08:00
    熟读 wsgi 协议先...
    boyhailong
        2
    boyhailong  
       2016-07-27 22:43:26 +08:00
    不同 API ? 是不同的请求吗?
    peter999
        3
    peter999  
       2016-07-27 23:08:03 +08:00
    多线程并发的, chrom 浏览器你开多个标签访问一个 url 会被顺序执行,这是 chrom 的问题,别的浏览器无此问题
    lovepython
        4
    lovepython  
       2016-07-28 10:08:41 +08:00   ❤️ 2
    每一个请求就是一个连接,对应后面一个线程或进程。

    你得理解 wsgi 协议,常规实现 wsgi 都是多进程加多线程。

    也就是一个请求进来, wsgi 接受这个请求分给一个线程,然后交给 django 的 view 去处理, view 里自然是顺序处理的。

    django 是单线程的顺序执行还是多线程的并发执行?

    这句话有问题的, django 只是逻辑框架,不是接受请求的服务器,没有接受请求的服务器, django 没鸟用,对于进来的请求是由 wsgi 分配的,他说让一个 django 执行,就一个,也可以让每个进来的请求对应一个 django 执行。

    所以他可以是单线程的顺序执行,也可以是并发执行。
    现实环境中,单线程顺序执行没啥意义,一次来这么多请求,一次处理一个,那么后面的怎么办,不就卡死了

    所以是并发执行的。
    myyou
        5
    myyou  
    OP
       2016-07-28 10:10:14 +08:00
    @lovepython 谢谢解答
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2688 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 05:14 · PVG 13:14 · LAX 21:14 · JFK 00:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.