测了一下django、flask、bottle、tornado 框架本身最简单的性能。对django的性能完全无语了。
django、flask、bottle 均使用gunicorn+gevent启动,单进程,并且关闭DEBUG,请求均只返回一个字符串ok。
tornado直接自己启动,其他内容一致。
测试软件为 siege,测试os为cenos6 64位,测试命令为:
siege -c 100 -r 100 -b http://127.0.0.1:5000/
Transactions: 10000 hits Availability: 100.00 % Elapsed time: 18.51 secs Data transferred: 0.02 MB Response time: 0.18 secs Transaction rate: 540.25 trans/sec Throughput: 0.00 MB/sec Concurrency: 99.35 Successful transactions: 10000 Failed transactions: 0 Longest transaction: 0.30 Shortest transaction: 0.12
Transactions: 10000 hits Availability: 100.00 % Elapsed time: 12.97 secs Data transferred: 0.02 MB Response time: 0.13 secs Transaction rate: 771.01 trans/sec Throughput: 0.00 MB/sec Concurrency: 99.41 Successful transactions: 10000 Failed transactions: 0 Longest transaction: 0.28 Shortest transaction: 0.12
Transactions: 10000 hits Availability: 100.00 % Elapsed time: 5.47 secs Data transferred: 0.02 MB Response time: 0.05 secs Transaction rate: 1828.15 trans/sec Throughput: 0.00 MB/sec Concurrency: 96.25 Successful transactions: 10000 Failed transactions: 0 Longest transaction: 0.11 Shortest transaction: 0.00
Transactions: 10000 hits Availability: 100.00 % Elapsed time: 4.55 secs Data transferred: 0.02 MB Response time: 0.04 secs Transaction rate: 2197.80 trans/sec Throughput: 0.00 MB/sec Concurrency: 96.81 Successful transactions: 10000 Failed transactions: 0 Longest transaction: 0.09 Shortest transaction: 0.00
Transactions: 10000 hits Availability: 100.00 % Elapsed time: 7.06 secs Data transferred: 0.02 MB Response time: 0.07 secs Transaction rate: 1416.43 trans/sec Throughput: 0.00 MB/sec Concurrency: 99.51 Successful transactions: 10000 Failed transactions: 0 Longest transaction: 0.09 Shortest transaction: 0.01
bottle > flask > tornado > django
tornado 使用了异步驱动,所以在写业务代码时如果稍有同步耗时性能就会急剧下降;
bottle需要自己实现的东西太多,加上之后不知道性能会怎样;
flask性能稍微差点,但周边的支持已经很丰富了;
django就不说了,性能已经没法看了,唯一的好处就是开发的架子都已经搭好,开发速度快很多
因为最近正在为一个项目选型发愁,所以就测了一下,记录在此吧。
PS: 2014-6-23 使用 centos6 64位 重新进行了测试,得出与生产环境更匹配的结果,并修改了文章。
本文向大家介绍简单介绍Python的轻便web框架Bottle,包括了简单介绍Python的轻便web框架Bottle的使用技巧和注意事项,需要的朋友参考一下 基本映射 映射使用在根据不同URLs请求来产生相对应的返回内容.Bottle使用route() 修饰器来实现映射. 运行这个程序,访问http://localhost:8080/hello将会在浏览器里看到 "Hello World!".
本文向大家介绍python中Flask框架简单入门实例,包括了python中Flask框架简单入门实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python中Flask框架的简单用法。分享给大家供大家参考。具体如下: 使用Flask框架的简单入门范例代码,如果你正学习Flask框架,可以参考下面的启动代码,这段代码可以在网页上输出“hello world” 希望本文所述对大家的Pyt
本文向大家介绍简单好用的nodejs 爬虫框架分享,包括了简单好用的nodejs 爬虫框架分享的使用技巧和注意事项,需要的朋友参考一下 这个就是一篇介绍爬虫框架的文章,开头就不说什么剧情了。什么最近一个项目了,什么分享新知了,剧情是挺好,但介绍的很初级,根本就没有办法应用,不支持队列的爬虫,都是耍流氓。 所以我就先来举一个例子,看一下这个爬虫框架是多么简单并可用。 第一步:安装 Crawl-pet
本文向大家介绍Python的Bottle框架基本知识总结,包括了Python的Bottle框架基本知识总结的使用技巧和注意事项,需要的朋友参考一下 基本映射 映射使用在根据不同URLs请求来产生相对应的返回内容.Bottle使用route() 修饰器来实现映射. 运行这个程序,访问http://localhost:8080/hello将会在浏览器里看到 "Hello World!". GET, P
本文向大家介绍Django框架实现的简单分页功能示例,包括了Django框架实现的简单分页功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Django框架实现的简单分页功能。分享给大家供大家参考,具体如下: 前面一篇《Django开发的简易留言板》写了个简单的留言板,如果数据量太多的话在一页显示就不那么友好了,本文就是做一个分页显示。 代码在上一篇的基础上修改。 导入分页模块并修改
问题内容: 我已经尝试了每个存在的Python Web框架,花了很长时间我才意识到没有一个灵丹妙药的框架,每个框架都有其优点和缺点。我从Snakelets入手,非常高兴能够将几乎所有内容都控制在较低的水平上,而不必大惊小怪,但是后来我发现了TurboGears,从那时起我一直在使用它(1.x)。Catwalk和Web控制台之类的工具对我来说是无价的。 但是随着TurboGears 2的问世带来了W