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

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

Python 的部署是个问题。

  • Python

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

    545 引用 • 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 的东西我都看不懂了

请输入回帖内容 ...

推荐标签 标签

  • V2Ray
    1 引用 • 15 回帖
  • 反馈

    Communication channel for makers and users.

    123 引用 • 913 回帖 • 251 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    149 引用 • 257 回帖
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    178 引用 • 997 回帖
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    85 引用 • 139 回帖 • 1 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    354 引用 • 1823 回帖 • 1 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 1 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 45 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    16 引用 • 130 回帖 • 1 关注
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖 • 1 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 221 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    497 引用 • 1388 回帖 • 278 关注
  • 分享

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

    248 引用 • 1795 回帖
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    288 引用 • 4485 回帖 • 664 关注
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 694 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    110 引用 • 54 回帖 • 2 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3190 引用 • 8214 回帖
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    20 引用 • 23 回帖 • 726 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 481 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    107 引用 • 295 回帖
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 668 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 789 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 419 关注