推荐学习书目
› 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
pengpotter
V2EX  ›  Python

Python Web 开发并发访问问题青椒

  •  
  •   pengpotter · Feb 28, 2016 · 5281 views
    This topic created in 3902 days ago, the information mentioned may be changed or developed.
    各位好啊,请教一个问题,我用 flask ngix gunicorn 部署了一个简单的 web 服务,但是发现如果一个用户访问的时候,其他用户必须等待前一个用户访问处理完了才能进行。。。这个问题怎么解决。。刚入门 web 开发。。请教下
    20 replies  •  2016-02-29 14:29:09 +08:00
    sunus
    sunus
    Feb 28, 2016
    1
    @pengpotter 看下 gunicorn 的 workers 配置了几个
    pengpotter
    pengpotter
    OP
    Feb 28, 2016
    2
    @sunus 不知道你说的 workers 的配置,是不是指的和 gunicorn -w 后面的这个参数是一个效果的。 我想请教下,如果这个数值设置为 10 ,那就是 10 个线程,然后可以同时接受 10 个并发访问? 这个意思么?如果这样的话。。效率也太低了
    lecher
    lecher
    Feb 28, 2016 via Android
    3
    并发十个,如果每个业务可以在 100ms 内解决,一秒也可以处理一百个请求了。
    还嫌不够就用 greenlet 。开启协程大法。
    pengpotter
    pengpotter
    OP
    Feb 28, 2016
    4
    @lecher OK ,我试试
    SlipStupig
    SlipStupig
    Feb 29, 2016
    5
    @pengpotter 生产环境建议开多个实例,如果你有 4core cpu ,就开 4 个 web 应用的实例,然后用 nginx 去代理,静态资源尽量让 nginx 去处理,如果 cpu 够的情况开启 gzip 模块, nginx 开启 TCP_NODELAY TCP_NOPUSH sendfile,总之一句话:让 nginx 多干活其它少干活
    maemual
    maemual
    Feb 29, 2016 via iPhone
    6
    @pengpotter 所以什么叫堆机器,这就是堆机器。想提高并发,就是要堆机器。
    pengpotter
    pengpotter
    OP
    Feb 29, 2016
    7
    @SlipStupig
    @maemual
    哦,听你们一说就明白怎么回事了,谢谢了~
    SlipStupig
    SlipStupig
    Feb 29, 2016
    8
    @maemual 写好程序才是王道,程序写的烂一百台机器也不如人家一台
    mengzhuo
    mengzhuo
    Feb 29, 2016 via iPhone
    9
    lz 你好可爱啊
    你需要的是并发方面的知识
    我司最高纪录是 5000 多人同时访问 python 写单进程程序,加油哦
    maemual
    maemual
    Feb 29, 2016 via iPhone
    10
    @SlipStupig 那你能永远不堆机器么。
    yov123456
    yov123456
    Feb 29, 2016 via iPhone
    11
    gunicorn-k gevent 会不会好一点 [我不懂…也问问
    tabris17
    tabris17
    Feb 29, 2016
    12
    开启 gevent 支持

    另外 nginx 拼写错误
    lovedboy
    lovedboy
    Feb 29, 2016
    13
    Gevent 支持或者多进程==
    liko
    liko
    Feb 29, 2016
    14
    开 gevent 也得看场景,别误导人家了
    thwawar
    thwawar
    Feb 29, 2016
    15
    gevent 在 IO 密集的时候才有效果
    virusdefender
    virusdefender
    Feb 29, 2016
    16
    单进程就是这样,后端可以做异步处理
    SlipStupig
    SlipStupig
    Feb 29, 2016
    17
    @maemual 看业务场景,能便宜坚决不贵
    zonghua
    zonghua
    Feb 29, 2016 via iPhone
    18
    其实好多互联网泡沫单机就能够稳妥地运行
    donghouhe
    donghouhe
    Feb 29, 2016 via iPad
    19
    也许加上 gevent 后就可以解决了吧,你的程序阻塞得太久了吧
    pengpotter
    pengpotter
    OP
    Feb 29, 2016
    20
    我今天试着加上了 gevent 之后就有效果了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1774 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 17:21 · PVG 01:21 · LAX 09:21 · JFK 12:21
    ♥ Do have faith in what you're doing.