RT,之前在这边请教过python和PHP的通信,大家很多很多建议,非常感谢。
最终决定使用bottle来对外提供RESTful接口供PHP调用,这个主要原因是我期望这部分逻辑尽量简单,bottle架构和源码相对比较短,应该能大致读下来。
现在的问题是,官方文档说,如果作为http server的话,bottle只能在开发环境里使用,不要放到生成环境里,原因是效率问题。我理解就是在解析http请求这些操作上,bottle的效率非常低,所以计划前边放一个nginx来处理http请求,将格式化之后的请求扔给bottle
除此之外,nginx应该还可以处理像白名单,访问频率控制等等这些事情。
但是在bottle文档里,似乎没有提到nginx部分,在deploy部分,提到用gunicorn(或者其他)作为server,处理请求,我想请教一下
谢谢
1
decken 2015-07-31 11:46:38 +08:00 via Android
nginx作为web服务器处理静态请求 gunicorn是CGI 是运行python脚本的容器,动态请求由nginx交由CGI处理
|
2
julyclyde 2015-07-31 12:20:43 +08:00
nginx如果用HTTP方式和bottle相连,那bottle还是免不了解析HTTP
你理解的瓶颈在文本协议解析上是不对的。真正的问题在于框架本身只处理了请求,而没有关注多进程和IO复用的资源管理。你需要的是gunicorn |
3
maemual 2015-07-31 12:24:04 +08:00
懒得解释了。
Nginx + gunicorn + bottle,这是常用的部署方式。你放宽心就好了。 |