Python Web 部署是 uWSGI 还是 gunicorn 更优?

本贴最后更新于 2961 天前,其中的信息可能已经时移俗易

Python 的部署是个问题。

  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    536 引用 • 672 回帖
  • uWSGI
    7 引用 • 62 回帖
  • Gunicorn
    3 引用 • 21 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250

    不知道....不会 [Python]

  • zonghua
    作者
    vi ~/.pip/pip.conf
    [global]
    index-url = http://pypi.tuna.tsinghua.edu.cn/simple
    # 或者
    http://pypi.douban.com/simple  豆瓣
    
  • zonghua
    作者
    # 安装 lxml ,依赖啊依赖
    $sudo apt-get install libxml2-dev libxslt-dev python2.7-dev
    $sudo pip install lxml
    
  • onlyice

    Gunicorn 看起来很简单直观,uWSGI 还没研究过。。

    不过就算用 Gunicorn,也要有个 nginx 搭配。

  • zonghua
    作者

    @onlyice Gunicorn 实际上启动的是 python 自己的 Http 服务?而 WSGI 是另外的基于 socket 的协议

  • zonghua
    作者

    使用测试服务器
    ./manage.py runserver
    Server Software: nginx/1.8.1
    Server Hostname: localhost
    Server Port: 80

    Document Path:          /
    Document Length:        1767 bytes
    
    Concurrency Level:      100
    Time taken for tests:   28.410 seconds
    Complete requests:      10000
    Failed requests:        206
       (Connect: 0, Receive: 0, Length: 206, Exceptions: 0)
    Non-2xx responses:      206
    Total transferred:      18841636 bytes
    HTML transferred:       17341430 bytes
    Requests per second:    351.99 [#/sec] (mean)
    Time per request:       284.096 [ms] (mean)
    Time per request:       2.841 [ms] (mean, across all concurrent requests)
    Transfer rate:          647.67 [Kbytes/sec] received
    
    Connection Times (ms)
    			  min  mean[+/-sd] median   max
    Connect:        0    0   0.8      0      10
    Processing:    19  271 858.4     35   15029
    Waiting:       19  271 858.3     35   15029
    Total:         27  271 858.8     35   15029
    
    Percentage of the requests served within a certain time (ms)
      50%     35
      66%     36
      75%     37
      80%     38
      90%   1033
      95%   1038
      98%   4271
      99%   4276
     100%  15029 (longest request)
    
  • zonghua
    作者

    使用 gunicorn

    Document Path:          /
    Document Length:        1767 bytes
    
    Concurrency Level:      100
    Time taken for tests:   20.769 seconds
    Complete requests:      10000
    Failed requests:        0
    Total transferred:      19170000 bytes
    HTML transferred:       17670000 bytes
    Requests per second:    481.49 [#/sec] (mean)
    Time per request:       207.690 [ms] (mean)
    Time per request:       2.077 [ms] (mean, across all concurrent requests)
    Transfer rate:          901.38 [Kbytes/sec] received
    
    Connection Times (ms)
    			  min  mean[+/-sd] median   max
    Connect:        0    0   0.9      0      10
    Processing:     7  207  13.2    208     225
    Waiting:        5  207  13.2    208     225
    Total:         13  207  12.5    208     225
    
    Percentage of the requests served within a certain time (ms)
      50%    208
      66%    210
      75%    212
      80%    213
      90%    216
      95%    218
      98%    221
      99%    222
     100%    225 (longest request)
    
  • zonghua
    作者

    使用 gunicorn -w 2
    Document Path: /
    Document Length: 1767 bytes

    Concurrency Level:      100
    Time taken for tests:   20.704 seconds
    Complete requests:      10000
    Failed requests:        0
    Total transferred:      19170000 bytes
    HTML transferred:       17670000 bytes
    Requests per second:    483.00 [#/sec] (mean)
    Time per request:       207.041 [ms] (mean)
    Time per request:       2.070 [ms] (mean, across all concurrent requests)
    Transfer rate:          904.20 [Kbytes/sec] received
    
    Connection Times (ms)
    			  min  mean[+/-sd] median   max
    Connect:        0    0   1.0      0      11
    Processing:     8  206  13.1    207     247
    Waiting:        6  206  13.1    207     247
    Total:         14  206  12.4    207     247
    
    Percentage of the requests served within a certain time (ms)
      50%    207
      66%    209
      75%    211
      80%    212
      90%    216
      95%    218
      98%    220
      99%    221
     100%    247 (longest request)
    
  • zonghua
    作者

    使用 gunicorn -w 4

    Document Path:          /
    Document Length:        1767 bytes
    
    Concurrency Level:      100
    Time taken for tests:   20.554 seconds
    Complete requests:      10000
    Failed requests:        0
    Total transferred:      19170000 bytes
    HTML transferred:       17670000 bytes
    Requests per second:    486.53 [#/sec] (mean)
    Time per request:       205.537 [ms] (mean)
    Time per request:       2.055 [ms] (mean, across all concurrent requests)
    Transfer rate:          910.82 [Kbytes/sec] received
    
    Connection Times (ms)
    			  min  mean[+/-sd] median   max
    Connect:        0    0   0.9      0      11
    Processing:     8  204  13.7    205     243
    Waiting:        5  204  13.7    205     243
    Total:         13  205  13.0    205     243
    
    Percentage of the requests served within a certain time (ms)
      50%    205
      66%    208
      75%    210
      80%    212
      90%    216
      95%    220
      98%    224
      99%    228
     100%    243 (longest request)
    
  • zonghua
    作者

    貌似开多个进程都没有用

  • zonghua
    作者

    使用 uwsgi --http :8000 --module project.wsgi

    Document Path:          /
    Document Length:        1767 bytes
    
    Concurrency Level:      100
    Time taken for tests:   22.060 seconds
    Complete requests:      10000
    Failed requests:        0
    Total transferred:      19170000 bytes
    HTML transferred:       17670000 bytes
    Requests per second:    453.30 [#/sec] (mean)
    Time per request:       220.604 [ms] (mean)
    Time per request:       2.206 [ms] (mean, across all concurrent requests)
    Transfer rate:          848.61 [Kbytes/sec] received
    
    Connection Times (ms)
    			  min  mean[+/-sd] median   max
    Connect:        0    0   0.9      0      11
    Processing:     8  219  13.3    221     241
    Waiting:        5  219  13.4    221     241
    Total:         13  220  12.6    221     241
    
    Percentage of the requests served within a certain time (ms)
      50%    221
      66%    223
      75%    224
      80%    225
      90%    227
      95%    229
      98%    234
      99%    237
     100%    241 (longest request)
    
  • zonghua
    作者

    使用 uwsgi --sock 127.0.0.1:8001 --max_process 2

    Document Path:          /
    Document Length:        1767 bytes
    
    Concurrency Level:      100
    Time taken for tests:   18.602 seconds
    Complete requests:      10000
    Failed requests:        0
    Total transferred:      19320000 bytes
    HTML transferred:       17670000 bytes
    Requests per second:    537.59 [#/sec] (mean)
    Time per request:       186.015 [ms] (mean)
    Time per request:       1.860 [ms] (mean, across all concurrent requests)
    Transfer rate:          1014.28 [Kbytes/sec] received
    
    Connection Times (ms)
    			  min  mean[+/-sd] median   max
    Connect:        0    0   1.0      0      11
    Processing:     8  185  11.7    185     201
    Waiting:        5  185  11.7    185     201
    Total:         13  185  11.0    185     202
    
    Percentage of the requests served within a certain time (ms)
      50%    185
      66%    189
      75%    191
      80%    192
      90%    194
      95%    196
      98%    198
      99%    199
     100%    202 (longest request)
    
  • zonghua
    作者

    看来是 uwsgi 最快

  • onlyice

    @zonghua 难以一两句话说清楚,可以参考下我之前写的帖子:
    https://plus.google.com/+ZhihengLin/posts/KJYNhtbeKLE

    测试很棒

  • zonghua
    作者

    @onlyice 网络的话除了 Http 的东西我都看不懂了

请输入回帖内容 ...

推荐标签 标签

  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    523 引用 • 4581 回帖 • 690 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    51 引用 • 37 回帖
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 618 关注
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    39 引用 • 24 回帖
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    89 引用 • 113 回帖
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    27 引用 • 66 回帖
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    180 引用 • 447 回帖 • 1 关注
  • 自由行
  • 博客

    记录并分享人生的经历。

    270 引用 • 2386 回帖
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    4 引用 • 55 回帖 • 8 关注
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    11 引用 • 5 回帖 • 563 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖 • 6 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    126 引用 • 1699 回帖
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 603 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    261 引用 • 662 回帖
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 294 关注
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 238 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 111 关注
  • 安全

    安全永远都不是一个小问题。

    189 引用 • 813 回帖
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    77 引用 • 1741 回帖
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 462 关注
  • 分享

    有什么新发现就分享给大家吧!

    242 引用 • 1747 回帖 • 1 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    370 引用 • 1215 回帖 • 582 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖