V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
iambic
V2EX  ›  问与答

请问 nginx 和 bottle 问题

  •  
  •   iambic · 2015-07-31 11:35:48 +08:00 · 2374 次点击
    这是一个创建于 3406 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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. 还有其他推荐的方式吗?

    谢谢

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

    你理解的瓶颈在文本协议解析上是不对的。真正的问题在于框架本身只处理了请求,而没有关注多进程和IO复用的资源管理。你需要的是gunicorn
    maemual
        3
    maemual  
       2015-07-31 12:24:04 +08:00
    懒得解释了。
    Nginx + gunicorn + bottle,这是常用的部署方式。你放宽心就好了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5432 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 07:22 · PVG 15:22 · LAX 23:22 · JFK 02:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.