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
pengpotter
V2EX  ›  Python

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

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

    另外 nginx 拼写错误
    lovedboy
        13
    lovedboy  
       2016-02-29 09:38:22 +08:00
    Gevent 支持或者多进程==
    liko
        14
    liko  
       2016-02-29 09:57:14 +08:00
    开 gevent 也得看场景,别误导人家了
    thwawar
        15
    thwawar  
       2016-02-29 10:27:32 +08:00
    gevent 在 IO 密集的时候才有效果
    virusdefender
        16
    virusdefender  
       2016-02-29 10:51:31 +08:00
    单进程就是这样,后端可以做异步处理
    SlipStupig
        17
    SlipStupig  
       2016-02-29 11:22:47 +08:00
    @maemual 看业务场景,能便宜坚决不贵
    zonghua
        18
    zonghua  
       2016-02-29 11:50:18 +08:00 via iPhone
    其实好多互联网泡沫单机就能够稳妥地运行
    donghouhe
        19
    donghouhe  
       2016-02-29 12:33:58 +08:00 via iPad
    也许加上 gevent 后就可以解决了吧,你的程序阻塞得太久了吧
    pengpotter
        20
    pengpotter  
    OP
       2016-02-29 14:29:09 +08:00
    我今天试着加上了 gevent 之后就有效果了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3182 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:35 · PVG 21:35 · LAX 05:35 · JFK 08:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.