V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xpol
V2EX  ›  Python

请教 Python JSON API 服务器选什么框架?

  •  
  •   xpol · 2016-09-20 18:06:03 +08:00 · 6356 次点击
    这是一个创建于 3015 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需要写一个服务器,主要做:

    1. 游戏客户端发送得分,服务器进行存储的统计。
    2. 根据得分的多少,评定要获得的虚拟奖励。
    3. 而虚拟奖励是第三方的虚拟产品,比如宝石,服务器需要将客户端用户信息和需要给予的奖励通知第三方的服务器。
    4. 客户端需要事先从服务器知道多少分,获得什么奖励,以便显示给用户。

    技术上考虑是 http(s) JSON API 服务器,数据库考虑 mongo 。

    Google 一圈下来 推荐的有

    我个人有多年编程经验,但是服务器编程只用过 Node.js 和 boost.asio 。

    考虑本身这个服务器需求比较简单,主要是操作 mongo 方便,才考虑 Python ,这样比较快。

    那么问题来了, Python Web 服务器框架里面(不限于以上)哪个满足以下要求呢:

    1. 满足以上业务需求。
    2. 易学(文档,例子等)易用,新手能快速上手,但是不容易用错,犯下严重错误。
    3. 服务器承载能力强,即便业务快速增长,也能方便规模化( Scale )。
    第 1 条附言  ·  2016-09-20 18:56:40 +08:00
    V2 果然是问 Python 的好地方。一会儿就这么多回复。
    感谢大家的回复!
    21 条回复    2016-09-21 12:26:08 +08:00
    jjx
        1
    jjx  
       2016-09-20 18:13:03 +08:00
    我一直用 bottle
    qweweretrt515
        2
    qweweretrt515  
       2016-09-20 18:14:09 +08:00
    django-rest-frame
    qweweretrt515
        3
    qweweretrt515  
       2016-09-20 18:14:19 +08:00
    django-rest-framework
    sylecn
        4
    sylecn  
       2016-09-20 18:22:29 +08:00   ❤️ 1
    1 3 这些框架都可以满足要求。 2 不犯错需要经验,基本上没有框架是没有坑的,只是挖坑的地方不同而已。
    小项目不用担心犯严重错误,大不了重写嘛。小项目,业务逻辑写好了,换框架不费事。

    推荐 flask 或者 bottle.
    原因:轻量级,项目在持续维护,结构简单,性能可靠。

    django 由于重量级,以及这个项目不需要 SQL 类型的 ORM ,也不需要模板渲染和相关的辅助工具,系统复杂带来的学习成本,不做考虑。
    web.py 自从原作者前些年不幸去世之后,项目维护和发展不及 flask 和 bottle. 所以从文档和性能调优方面来看,不推荐。

    如果追求性能 bottle + gevent 或者 bottle + uwsgi 挺靠谱的。
    如果喜欢各种集成, flask 对周边东西的集成比 bottle 多一些。用 bottle 需要你自己比较懂 web , flask 即使不懂也可以开始用别人写好的一些东西。
    bomb77
        5
    bomb77  
       2016-09-20 18:32:01 +08:00   ❤️ 3
    如果纯后端 api 的话,可以尝试 falconframework ,分分钟就可以写一个 api 出来,而且性能很好,具体官网有说明
    nginx + gunicorn + falconframework
    virusdefender
        6
    virusdefender  
       2016-09-20 18:35:16 +08:00
    mongod 的话,不推荐 django 了,因为 orm 不支持,和其他框架没啥区别了。
    shuax
        7
    shuax  
       2016-09-20 18:37:05 +08:00
    tornado 路过
    chengxuyuanfei
        8
    chengxuyuanfei  
       2016-09-20 20:26:19 +08:00 via Android
    推荐 flask ,够轻,开发快
    qwer1234asdf
        9
    qwer1234asdf  
       2016-09-20 20:29:27 +08:00
    flask 不错,我们现在在用, flask 做后台,同时给 ios/android 、 pc 和管理后台提供接口
    magicdawn
        10
    magicdawn  
       2016-09-20 20:37:50 +08:00
    koa + mongoose 手动 dog
    28ms
        11
    28ms  
       2016-09-20 20:40:05 +08:00   ❤️ 1
    我谈谈自己的经历,最近一个项目用了 drf ,也就是 django rest framwork, 数据库部分用了 Mysql ,并且用了大量的 Django ORM 。
    实际项目中有很多 Restful 规范并不能很好的被其他人接受,我的理解是 restful 是一种面向 Resource 的规范。跟前端配合上也有些波折(前端水平不咋地, rest 之前都没听说过)。
    如果项目需求简单那么可以用非常快的速度搭建一套可用的 API ,但是如果项目结构复杂、需要自定义的东西越多,那么这个框架带来的便利程度大打折扣,甚至有些拖后腿。

    之前一直在自己的小项目里练手 drf ,这是第一次用在正式的项目中,结果就暴露了很多问题,当然也有可能是我认识不够全面,所以仅作为我个人看法供参考。接下去会吸收一些 drf 的设计理念自己造一个轻量级贴合公司业务本身的框架轮子。
    ldehai
        12
    ldehai  
       2016-09-20 20:40:20 +08:00
    tornado
    102400
        13
    102400  
       2016-09-20 20:51:16 +08:00
    Ruby 的 Grape
    GhostStar
        14
    GhostStar  
       2016-09-20 20:54:07 +08:00
    flask+1
    cszhiyue
        15
    cszhiyue  
       2016-09-20 20:55:03 +08:00
    flask 根据需要
    lilydjwg
        16
    lilydjwg  
       2016-09-20 21:07:53 +08:00   ❤️ 1
    Tornado, 异步的,不需要开一堆进程 /线程来跑。一个核开一个进程就好。
    简单,没有 Flask 和 Django 那么多东西,易上手(特别是做 JSON API )。而且你也有异步编程的经验。
    另外我用过 Flask ,特别讨厌它的 g 和 request 这种「全局」变量。刚开始用着方便,但是很容易犯下严重的设计错误( 必要地耦合到这些变量上)。
    lilydjwg
        17
    lilydjwg  
       2016-09-20 21:08:21 +08:00
    @lilydjwg 打漏字了,应该是「不必要地」。
    Gem
        18
    Gem  
       2016-09-20 21:19:11 +08:00
    推荐 bottle 不多啊
    wuxqing
        19
    wuxqing  
       2016-09-21 08:18:14 +08:00
    flask +1 插件、轮子比较多
    putianxi
        20
    putianxi  
       2016-09-21 09:18:32 +08:00
    有个新框架叫做 hug , https://github.com/timothycrosley/hug, 看着挺不错,基于 aiohttp
    onestar
        21
    onestar  
       2016-09-21 12:26:08 +08:00
    flask 足够,灵活,轻量级
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   851 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:36 · PVG 04:36 · LAX 12:36 · JFK 15:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.