擅长:python、mysql、java
<p>瓶子和瓶子对我来说有几件事。</p>
<ol>
<li>这个应用程序有多简单。如果它非常简单,那么瓶子就是我的选择。如果没有,我就拿着烧瓶。瓶子是一个单独的文件这一事实使得在我们的源代码中包含该文件的部署变得非常简单。但是,bottle是一个单独的文件这一事实应该很好地表明它没有实现完整的wsgi规范及其所有的边缘案例。</li>
<li>这个应用程序是做什么的。如果它需要呈现Python->;JSON以外的任何内容,那么我将使用Flask来构建它以支持Jinja2。如果我需要进行身份验证和/或授权,那么Flask已经有了一些很好的扩展来处理这些需求。如果我需要做缓存,再一次,烧瓶缓存存在,并做了一个很好的工作与最小的设置。我不完全确定什么是可用的瓶子延长明智,所以这可能仍然值得一看。</li>
</ol>
<p>使用bottle的内置服务器的问题是它将是单进程/单线程的,这意味着您一次只能处理一个请求。</p>
<p>要处理这个限制,您可以不按特定顺序执行以下任何操作。</p>
<ol>
<li>Eventlet让wsgi包装bottle.app(单线程、非阻塞I/O、单进程)</li>
<li>uwsgi或gunicorn(后者更简单),通常设置为单线程、多进程(workers)</li>
<li>nginx在uwsgi前面。</li>
</ol>
<p>3是最重要的,如果你有静态资产,你想服务,因为你可以与nginx直接服务。<br/>
2非常容易使用(特别是gunicorn)-虽然我大部分时间都使用uwsgi,因为它有更多的可配置性来处理一些我想要的事情。<br/>
我真的很简单而且表现很好。。。另外,没有要记住的外部配置或命令行标志。</p>