请问 nginx 和 bottle 问题

2015-07-31 11:35:48 +08:00
 iambic

RT,之前在这边请教过python和PHP的通信,大家很多很多建议,非常感谢。

最终决定使用bottle来对外提供RESTful接口供PHP调用,这个主要原因是我期望这部分逻辑尽量简单,bottle架构和源码相对比较短,应该能大致读下来。

现在的问题是,官方文档说,如果作为http server的话,bottle只能在开发环境里使用,不要放到生成环境里,原因是效率问题。我理解就是在解析http请求这些操作上,bottle的效率非常低,所以计划前边放一个nginx来处理http请求,将格式化之后的请求扔给bottle

除此之外,nginx应该还可以处理像白名单,访问频率控制等等这些事情。

但是在bottle文档里,似乎没有提到nginx部分,在deploy部分,提到用gunicorn(或者其他)作为server,处理请求,我想请教一下

  1. 直接nginx + bottle 会有什么问题吗?
  2. gunicorn 扮演的是和nginx类似的角色吗?
  3. 还有其他推荐的方式吗?

谢谢

2277 次点击
所在节点    问与答
3 条回复
decken
2015-07-31 11:46:38 +08:00
nginx作为web服务器处理静态请求 gunicorn是CGI 是运行python脚本的容器,动态请求由nginx交由CGI处理
julyclyde
2015-07-31 12:20:43 +08:00
nginx如果用HTTP方式和bottle相连,那bottle还是免不了解析HTTP

你理解的瓶颈在文本协议解析上是不对的。真正的问题在于框架本身只处理了请求,而没有关注多进程和IO复用的资源管理。你需要的是gunicorn
maemual
2015-07-31 12:24:04 +08:00
懒得解释了。
Nginx + gunicorn + bottle,这是常用的部署方式。你放宽心就好了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/209807

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX