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

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

Python 的部署是个问题。

  • Python

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

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

请输入回帖内容 ...

推荐标签 标签

  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    947 引用 • 1460 回帖
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 643 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 445 关注
  • Sillot

    Insights(注意当前设置 master 为默认分支)

    汐洛彖夲肜矩阵(Sillot T☳Converbenk Matrix),致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点。其中汐洛绞架(Sillot-Gibbet)基于自思源笔记(siyuan-note),前身是思源笔记汐洛版(更早是思源笔记汐洛分支),是智慧新录乄终端(多端融合,移动端优先)。

    主仓库地址:Hi-Windom/Sillot

    文档地址:sillot.db.sc.cn

    注意事项:

    1. ⚠️ 汐洛仍在早期开发阶段,尚不稳定
    2. ⚠️ 汐洛并非面向普通用户设计,使用前请了解风险
    3. ⚠️ 汐洛绞架基于思源笔记,开发者尽最大努力与思源笔记保持兼容,但无法实现 100% 兼容
    29 引用 • 25 回帖 • 133 关注
  • Google

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

    49 引用 • 192 回帖
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    116 引用 • 320 回帖
  • Kubernetes

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

    118 引用 • 54 回帖 • 6 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1432 回帖
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 7 关注
  • 印象笔记
    3 引用 • 16 回帖 • 2 关注
  • Anytype
    3 引用 • 31 回帖 • 28 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖
  • gRpc
    11 引用 • 9 回帖 • 103 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖 • 1 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    173 引用 • 414 回帖 • 365 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 615 关注
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    167 引用 • 408 回帖 • 485 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 1 关注
  • LeetCode

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

    209 引用 • 72 回帖 • 2 关注
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 108 关注
  • Bug

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

    76 引用 • 1742 回帖 • 2 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 27 关注
  • RemNote
    2 引用 • 16 回帖 • 26 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 563 关注
  • 大数据

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

    89 引用 • 113 回帖
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 1 关注
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 120 关注