使用瓶子进行路由的性能优势?

时间:2015-02-12 09:35:53

标签: python performance architecture web2py bottle

几年前,我开始基于网络框架开发一个Web应用程序。我当时选择了Bottle,因为它是最快速起步和运行的最简单的解决方案,而我正在努力构建一个我的想法的原型。现在,我有几千行代码,我正在寻求进入生产级解决方案。

起初我认为我应该转移到完整的堆栈框架,例如。当我向那个方向发展时,我开始只是使用其他框架的各个部分,因为我需要它们。例如,我实现了web2py的数据访问层(DAL),以便我可以在上运行我的应用程序,现在我正在寻求使用web2py的调度程序来管理作业。然后,我开始使用作为生产级网络服务器。我尝试了火箭服务器,但我的错误越来越多,所以我更喜欢樱桃火箭。

我开始考虑重写我的代码以充分利用web2py的完整堆栈解决方案;但是,重写我的路由功能以完全进入web2py的时间似乎很重要,我真的对火箭服务器不满意。

我非常喜欢Bottle的简单性,Bottle使用装饰器函数将路径映射到函数的方式,以及可扩展性的哲学。

我想知道在使用Bottle进行路由时,与任何完整堆栈框架相比,在性能方面是否有任何特定优势。

我很感激任何人的建议!

2 个答案:

答案 0 :(得分:4)

根据this benchmark和其他人的说法,Bottle的表现明显快于其他同行,这在比较网络框架时值得考虑。性能:

1. wheezy.web........52,245 req/sec or  19 μs/req (48x)
2. Falcon............30,195 req/sec or  33 μs/req (28x)
3. Bottle............11,977 req/sec or  83 μs/req (11x)
4. webpy..............6,950 req/sec or 144 μs/req (6x)
5. Werkzeug...........6,837 req/sec or 146 μs/req (6x)
6. pyramid............4,035 req/sec or 248 μs/req (4x)
7. Flask..............3,300 req/sec or 303 μs/req (3x)
8. Pecan..............2,881 req/sec or 347 μs/req (3x)
9. django.............1,882 req/sec or 531 μs/req (2x)
10. CherryPy..........1,090 req/sec or 917 μs/req (1x)

但请记住your web framework may not be your bottleneck

答案 1 :(得分:1)

来自web2py的创建者,Massimo Di Pierro:

  

如果您有简单的应用程序,有很多型号,可以使用bottle + gluino   比web2py更快,因为模型只执行一次而不是执行   每一个请求。

参考:

groups.google.com/forum/#!topic/web2py/4gB9mVPKmho