[编程]最快的Python Web框架:wheezy.web

wheezy_web_logo

喘息网站 它没有徽标; 我用GIMP制作了图像。

我已经停止使用Python编程很长时间了,但这并没有阻止我与您共享我所了解的技术;)。 前一段时间,我开始寻找Python中“最佳”的Web框架,因为我使用的那个(Web2Py)非常慢。 我的研究使我 喘息网站; 那些认识他的人肯定已经通过 作者在其博客上做出的出色基准:

蟒蛇最快的网络框架

我知道, 每秒25.000个请求 与其他框架相比,这是一个真正的过程。 我自己用过 喘息网站 有一阵子,我不得不说这是一件真正的艺术品。 无论您在哪里看,都可以:速度,简单性,安全性……一切。 最重要的是一个人的工作:Andriy Kornatskyy。

  • 适用于 Python的2, Python的3 y y。 即使3可以提供更好的性能,也最好继续使用2直到3足够成熟为止。
  • 它的设计是 模块化因此 喘息网站 还有更多的东西: Wheezy模板, 喘息.html, 喘息的安全…使用所需的零件。
  • 文件 简单易懂。
  • 自动HTML优化 (对其进行压缩,以便在不使用外部工具的情况下减少占用)。
  • 否则怎么可能 免费软件和开源 D.
  • 等等......

在Andriy的博客上,有很多很棒的教程 安装 喘息网站 变干 o 使用i18n(多种语言); 也解释 如何使用 喘息网站 与Nginx。 他所有教程的缺点是 假设您使用Debian,因为他尚未在其他发行版上进行测试。

如果你使用 Fedora 你有兴趣 喘息网站,您真幸运! 这是将安装必要软件包的命令,以便能够按照其教程进行操作:

sudo dnf install python python-devel python3 python3-devel python-setuptools python-virtualenv libxml2 libxml2-devel libxslt libxslt-devel libmemcached libmemcached-devel memcached memcached-devel gzip ntpdate gettext uwsgi uwsgi-plugin-python socat nginx

Andriy提供的安装教程 喘息网站 使用Nginx时,请使用专门为Debian设计的脚本,因此,如果使用其他系统,则必须自己执行。 就我而言,uWSGI对我来说足够了,因此我从未尝试过。

事实是存在 喘息网站 我发现使用其他框架是犯罪,因此,如果您使用Python,则至少要看看它! 唯一可以归因于它的缺点是,它没有带来任何抽象层来促进数据库的工作(也不需要这样做,但是有人对此表示赞赏)。

就这样。 简短但相关的文章。 我保证会带来更多有趣的技术! 再见〜

顺便说一句,出于好奇,您知道为什么它被称为“神气”吗? Andriy是Debian的粉丝。 我把它留在那里;)。


22条评论,留下您的评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   布鲁诺·卡西欧(Bruno Cascio)

    性能不是唯一的因素。 与Django相比,它非常不可读。 老实说,应该每秒看到25000个请求,但是我宁愿保持15000(django)正常运行,其余工作将其委托给基础结构,这实际上是将要接收或请求的基础结构。不,25000个请求。

    问候! 谢谢你的数据🙂

    1.    布鲁诺·卡西欧(Bruno Cascio)

      不用说,要进行基准测试,我会使用其他框架的旧版本...

      1.    拉伊托

        该基准文章来自2012年。他在2013年再次对其进行了修改和扩展,他本人指定这些年份是该年份的数据:《撰写本文时,最新版本(15年2013月XNUMX日)»

    2.    拉伊托

      您认为我认为的难以辨认是那么糟糕。 我知道经常会寻求简化编程的方法,但是我认为并没有真正的区别。 我使用Web2Py已有一年,并且向您保证,它是最容易使用的框架之一。 当然,它的性能在很多方面都非常糟糕。在基准测试文章Massimo Di Pierro本人(Web2Py的创建者)与Andriy进行了一场辩论,他最终承认还有很多地方需要改进。 在IRC上与Andriy交谈时,他告诉我:“有一种被广泛接受的哲学,即将所有内容放入框架中,并且即使没有使用大多数功能也将其features肿”,以及他是如何正确...

      关于您对基础架构的看法,我会部分分享您的看法; 10.000的差额很多,尤其是当我们谈论最流行,最成熟的框架与最近的鲜为人知的框架时。 我的方法始终是将最高效率与最高生产率结合起来,我认为wheezy.web做到最好。 我使用过Web2Py(最多),Django,Pyramid和wheezy.web,并且向您保证它是无与伦比的。 一旦适应了他的处事方式,就不会脱离他。 Django的唯一优势是它拥有庞大的社区和遍布Internet的资源。 也就是说:轻松。 相比之下,wheezy.web还是一个相当新的事物,很少有人知道。 如果轻松的话,最好使用Web2Py或Django xD。

      我不想扩展,但是当我们谈论每秒请求时,我们谈论的是并发。 如果需要并发,则Python不是合适的语言。 那就是Erlang或Haskell等其他语言的用途(如果您要赶紧我的话,Rust)。 但是正是由于这个原因,令人吃惊的是,仅占用很少代码的wheezy.web就是人们在闲暇时的工作,并且还受到其他一系列因素的影响,从而成功实现了这种性能。

      我理解您所说的“健康写作”,但您永远不知道一个项目可以长期增长。 使用更高效,更有效的并发工具,以及使用简单的工具(我认为wheezy.web就其性能而言很简单),可以节省资金,并使项目规模更长,而无需更改语言。 最后,一切都在您必须为服务器支付的钱中。 在PHP中,有许多非常著名的网站,但当PHP的性能令人震惊时...但是您如何解决该问题? 购买更好的服务器。 使用另一种方法,可以通过更好地编程并节省资源来解决:P.

      很抱歉扩展了我自己。 我对xDDD充满热情。 问候!

      1.    布鲁诺·卡西欧(Bruno Cascio)

        我完全理解您的意思,但是正是由于您提到的内容,如果一个项目趋向于增长与否,因为我们一直在忙,所以没有数据库层。

        以我的观点,最好不要嫁给任何语言。 如果需要并发,则也可以使用Node,它的引擎在C中运行。

        您提到的性能不仅仅是垂直扩展(在PHP的情况下),例如Facebook提供了HHVM,我已经阅读(未测试)可以将性能提高50%,而且这并不是购买服务器。 简而言之,没有缓存层和/或其他优化方式的PHP与没有其他语言的任何其他语言一样“糟糕”,我的意思是给它们起一个名字很不好,而不仅仅是“更好的编程”。

        干杯! 🙂

      2.    拉伊托

        让我们看看,这里没有抽象层。 但是,您可以使用相应的库或模块来处理数据库以及外部数据库,这不再是个谜。 例如,Web2Py抽象层非常简单,但是由于您甚至无法编写优化的SQL,因此性能会急剧下降。 一切都在Python中; 容易,但回报表现。

        我知道HHVM,这就是为什么像PHP这样的语言在现代很糟糕的原因; 如果Facebook位于Haskell或Erlang中,则无需创建HHVM。 使用缓存,压缩发送和接收的文件等。 它们是任何发展的明显方面。 问题是该工具必须达到标准:)。 并且有些工具不提供它。 最好的例子是JavaScript ...在这种情况下,至少有奇迹,例如CoffeeScript,Dart等。 编译为JS。

        您好!

      3.    布鲁诺·卡西欧(Bruno Cascio)

        完善! 🙂

        仅仅是一件事,facebook,如果您使用haskell,更确切地说是Haxl🙂

      4.    停止

        好吧,我经常使用web2py,我同意这不是最快的框架,但是该基准测试似乎有点不合时宜,更何况在我们谈论3年前时,与之相比,web2py的h哑应用程序已加载得非常多到其他框架,但老实说我还没有体验过用web2py和django编写的应用程序之间的性能差异。

        顺便说一句,在web2py中,是否可以编写SQL直接执行查询。

        问候。

  2.   尿激酶

    您说的最快的Web框架,但没有显示任何示例和其他关键因素,例如开发,生产力,文档。 有了django,我不知道为什么不使用它似乎是一种犯罪:p

    1.    拉伊托

      -文档中已经有示例。 在他的BitBucket页面上: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      -关于发展和生产力,我个人认为以“简单”进行总结是一个不错的选择。 什么是更简单易用的框架? 当然。 但是性能不高。
      -我将链接指向xDDD中的文档。
      -之所以说这是犯罪,是因为我认为网页应以各种方式尽可能高效。 如前所述,有些框架更易于使用,但是使用wheezy.web也不是C编程,您只需要更加努力即可:)。

      问候^^。

  3.   拉伊托

    顺便说一句,如果有人懒惰地发现并认为Wheezy Web仅在每秒请求数中获胜,那么……这里还有一些基准测试:

    http://paste.desdelinux.net/5128 (垃圾邮件过滤器 DesdeLinux 它不会让我放这么多链接)

    抱歉,以前没有包含这些内容。 我以为足以吸引好奇心xD。 问候!

  4.   Fenriz

    到目前为止,对Django感到满意。

    1.    粘土

      嗯,每当我阅读这些内容时,都会使我感到愤怒,我以为这仅适用于php框架(Symfony,Yii,CondeIgniter,Phalcon…………wdf!)。 如果Django已经有一个社区(很大)并且是一个很好的框架,那么为什么不浪费时间重新发明轮子,而不是加入django团队呢@ Lajto与wheezy.web的作者进行对话时,为什么不你问他吗?如果你从没想过要加入django团队,那就该死。

      1.    拉伊托

        尽管两者都是Web框架,但是它们具有截然不同的方法。 Django很重,它有很多代码,而wheezy.web很轻,它致力于简化和优化。 据我所知,wheezy.web是唯一真正的模块化Python Web框架(也就是说,它将所有代码拆分为可以独立工作的不同部分)。 它具有许多与众不同的特征。

        您为什么不加入Django? 因为Django的设计方法完全不同。 您如何将模块化设计应用于Django? 它实际上必须从头开始重新制作! 其他许多问题也是如此。

        我了解“最好是一个可以在大型社区中正常工作的单一框架”的感觉,但这并不是那么容易。 就像您了解的那样,通过建立表面的联系,Django就像是Debian和wheezy.web一样……拱门? Gentoo? 绝对是一个不好的例子,但是我认为xDDD是可以理解的。

        您好!

  5.   “尤利西斯”

    Lajto怎么样,嘿,我正在开发一个应用程序,我阅读了wheezy.web文档,这是我第一次了解的第一个python Web框架🙂您知道,我对网络和Web的了解不多,但是我对编程有特别的吸引力。
    您能帮我如何修改Hello World使其成为公共服务器吗? 抱歉,这可能是一个非常愚蠢的问题,但我在文档中找不到如何执行此操作。
    另一个问题,在get和post方法中,当我返回非html页面的信息时,是否按原样返回信息? 作为字符串或列表或任何类型的数据。 客户端是android中的应用。

    1.    拉伊托

      你好乌利塞斯! 我很高兴您正在测试wheezy.web:D。

      关于您的评论,我强烈建议您不要安装自己的结构。 安德里(Andriy)骑的那辆相当不错,所以我建议您遵循它。 在本文中,有两个指向Andriy博客的链接,其中他解释了使用i18n和不使用i18n的步骤。 万一有点混乱,我将在下面解释不使用i18n的情况:

      打开一个终端并运行以下四个命令(将“ test-web”替换为您要用于项目的文件夹的名称):

      wget的 https://bitbucket.org/akorn/wheezy.web/downloads/quickstart-empty.zip

      解压缩quickstart-empty.zip

      mv quickstart-empty测试网站

      rm 快速启动-空.zip

      如果要使用PIL,请修改setup.py文件并取消注释相应的代码。 准备就绪后,运行以下三个命令:

      网络测试光盘

      使环境

      env / bin / easy_install uwsgi

      您的服务器已安装。 如果要在文件夹中进行快速基准测试以查看其是否有效,请运行:

      制定测试标准

      我建议您转到“ etc / development.ini”并将“ limit-as = 120”更改为“ limit-as = 512”。 这就是uWSGI将“消耗”多少MB的RAM,因此将来可以根据需要增加它。

      最后,每次您要打开服务器时,就足以将您自己定位在项目文件夹中并执行:

      做uwsgi

      关于其他问题...默认情况下,服务器被编程为在localhost上运行。 如果要使其公开,因为已经准备好并且要在生产中的物理服务器上使用它,只需打开“ src / app.py”并找到以下位置:make_server(“ 8080,主要”)。 第一个参数是一个空字符串,对吗? 好了,在这里放置了服务器的IP。 第二个参数是您要使用的端口,默认情况下为8080。

      最后,您当然可以说返回HTML以外的内容! 他们在文档中解释了如何返回所有内容: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      问候! 您告诉我的任何内容;)。

      1.    “尤利西斯”

        非常感谢Lajto,您确实澄清了我的疑问,我曾经尝试过使用django,但是正如我告诉您的那样,我不是系统工程师和django,我认为它带来的好处远远超出了我的需要,请使用wheezy.web在android中测试应用程序并与服务器通信。 很简单,但是又很实用的东西。 嘿,还有一个问题,最近我发现http / 2引起了很大的争议,我怎么知道wheezy.web使用的协议呢? 或向我推荐一本书,一本博客,一本教程,它们可以分块解释网络和通信的整个问题。 再次感谢。

      2.    拉伊托

        再次问好,Uluises ^^。

        HTTP / 2是非常新的,并且在接下来的1年内不会被认真采用,因此,请不要理会:)。 如果您需要安全性,请使用HTTPS就是这样。

        我不确定Wheezy Web用于HTTP的方式,所以我假设它将是WSGI。

        您好!

  6.   拉伊托

    顺便说一句,什么都没有。 在某些发行版中,将显示有关.python-eggs的警告消息。 如果出现,则什么也不会发生,但是如果发现它很烦人,可以使用以下方法将其删除:

    chmod go =〜/ .python-鸡蛋

    您好!

  7.   迭戈

    我正在使用Django,但我将查看文档以了解其工作方式。 感谢分享。 问候

  8.   杰维耶加斯

    可以在Windows !!!上使用它,有教程吗?

    谢谢

  9.   拉丽塔

    嗨,我们对Python有很多经验。 在我看来,他们正在逆流而上。 该语言发明的最好的东西是Django。 他们可以进行统计并咨询来自世界各地的数百名程序员,这将为您提供80%以上的服务,其中大多数人都没有错。 如果他们逆流而行或游泳,迟早他们会淹死...