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

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

Python 的部署是个问题。

  • Python

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

    535 引用 • 672 回帖 • 2 关注
  • 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 的东西我都看不懂了

请输入回帖内容 ...

推荐标签 标签

  • Postman

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

    4 引用 • 3 回帖 • 1 关注
  • Vim

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

    27 引用 • 66 回帖
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 317 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 421 关注
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    21 引用 • 58 回帖
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    89 引用 • 345 回帖 • 2 关注
  • 爬虫

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

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

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

    77 引用 • 1741 回帖
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 398 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 19 关注
  • CAP

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

    11 引用 • 5 回帖 • 563 关注
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 401 关注
  • PWL

    组织简介

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

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

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

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 9 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 549 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 287 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    531 引用 • 3528 回帖
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 3 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 15 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    915 引用 • 931 回帖
  • SSL

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

    69 引用 • 190 回帖 • 492 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • Sym

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

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

    523 引用 • 4581 回帖 • 692 关注
  • 安全

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

    189 引用 • 813 回帖 • 3 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    5 引用 • 15 回帖 • 223 关注
  • CSS

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

    180 引用 • 447 回帖 • 1 关注