几年前,我开始基于bottle网络框架开发一个Web应用程序。我当时选择了Bottle,因为它是最快速起步和运行的最简单的解决方案,而我正在努力构建一个我的想法的原型。现在,我有几千行代码,我正在寻求进入生产级解决方案。
起初我认为我应该转移到完整的堆栈框架,例如django或web2py。当我向那个方向发展时,我开始只是使用其他框架的各个部分,因为我需要它们。例如,我实现了web2py的数据访问层(DAL),以便我可以在google-app-engine上运行我的应用程序,现在我正在寻求使用web2py的调度程序来管理作业。然后,我开始使用cherrypy作为生产级网络服务器。我尝试了火箭服务器,但我的错误越来越多,所以我更喜欢樱桃火箭。
我开始考虑重写我的代码以充分利用web2py的完整堆栈解决方案;但是,重写我的路由功能以完全进入web2py的时间似乎很重要,我真的对火箭服务器不满意。
我非常喜欢Bottle的简单性,Bottle使用装饰器函数将路径映射到函数的方式,以及可扩展性的哲学。
我想知道在使用Bottle进行路由时,与任何完整堆栈框架相比,在性能方面是否有任何特定优势。
我很感激任何人的建议!
答案 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)
答案 1 :(得分:1)
来自web2py的创建者,Massimo Di Pierro:
如果您有简单的应用程序,有很多型号,可以使用bottle + gluino 比web2py更快,因为模型只执行一次而不是执行 每一个请求。
参考: