我正在开发一个基于Python的应用程序(HTTP-REST或jsonrpc接口),它将用于生产自动化测试环境。这将连接到运行所有测试脚本的Java客户端。即,不需要人工访问(除了测试应用程序本身)。
我们希望在Raspberry Pi上部署它,所以我希望它相对较快且占用空间小。它可能不会获得大量请求(在最大负载下,可能是每秒几次),但它应该能够运行并在很长一段时间内保持稳定。
由于其简单性(一个文件),我已经确定了Bottle作为框架。这是对Flask的折腾。任何认为Flask可能会更好的人,让我知道原因。
我对Bottle的内置HTTP服务器的稳定性有点不确定,所以我正在评估这三个选项:
问题:
答案 0 :(得分:11)
Flask vs Bottle对我来说有几件事情。
使用内置服务器的问题在于它将是单进程/单线程,这意味着您一次只能处理一个请求。
要处理该限制,您可以按照特定顺序执行以下任何操作。
3是最重要的,因为您可以直接为nginx提供服务
2很容易上手(尤其是gunicorn) - 虽然我大多数时候都使用uwsgi,因为它有更多的可配置性来处理我想要的东西。
1非常简单并且运行良好......而且没有外部配置或命令行标记要记住。
答案 1 :(得分:7)
2017更新 - 我们现在使用Falcon代替Bottle
我仍然喜欢Bottle,但我们去年达到了一个点,它无法扩展以满足我们的性能要求(100k请求/秒<100ms)。特别是,我们遇到了瓶子使用线程本地存储的性能瓶颈。这迫使我们切换到Falcon,自那以后我们就没有回头了。更好的性能和精心设计的API。
我喜欢Bottle但我也强烈推荐 Falcon ,特别是在性能很重要的地方。
我在一年前面临类似的选择 - 需要为我正在构建的服务器层进行网络微框架。发现这些幻灯片(以及随附的演讲)对于筛选选择领域非常有帮助:Web micro-framework BATTLE!
我选择了瓶子并且非常满意。它简单,轻巧(如果你在Raspberry Pis上部署,还有一个优点),易于使用,直观,具有我需要的功能,并且每当我需要添加自己的功能时,它都是极其可扩展的。 Many plugins可用。
除了dev。
之外,不要使用Bottle的内置HTTP服务器我在制作中运行了瓶子并取得了很大的成功;它在Apache / mod_wsgi上非常稳定。 nginx / uwsgi“应该”的工作方式类似,但我没有经验。
答案 2 :(得分:2)
我还建议您通过gevent.pywsgi服务器查看运行瓶子。它非常棒,设置非常简单,异步且速度非常快。
Plus瓶已经为它构建了一个适配器,所以更容易。
我喜欢瓶子,而这个不适合大型项目的概念是荒谬的。它是最有效和编写良好的框架之一,并且可以轻松地模制而不需要大量的手工拧紧。