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

2016-09-20 18:06:03 +08:00
 xpol

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

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

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

Google 一圈下来 推荐的有

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

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

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

  1. 满足以上业务需求。
  2. 易学(文档,例子等)易用,新手能快速上手,但是不容易用错,犯下严重错误。
  3. 服务器承载能力强,即便业务快速增长,也能方便规模化( Scale )。
6320 次点击
所在节点    Python
21 条回复
jjx
2016-09-20 18:13:03 +08:00
我一直用 bottle
qweweretrt515
2016-09-20 18:14:09 +08:00
django-rest-frame
qweweretrt515
2016-09-20 18:14:19 +08:00
django-rest-framework
sylecn
2016-09-20 18:22:29 +08:00
1 3 这些框架都可以满足要求。 2 不犯错需要经验,基本上没有框架是没有坑的,只是挖坑的地方不同而已。
小项目不用担心犯严重错误,大不了重写嘛。小项目,业务逻辑写好了,换框架不费事。

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

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

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

之前一直在自己的小项目里练手 drf ,这是第一次用在正式的项目中,结果就暴露了很多问题,当然也有可能是我认识不够全面,所以仅作为我个人看法供参考。接下去会吸收一些 drf 的设计理念自己造一个轻量级贴合公司业务本身的框架轮子。
ldehai
2016-09-20 20:40:20 +08:00
tornado
102400
2016-09-20 20:51:16 +08:00
Ruby 的 Grape
GhostStar
2016-09-20 20:54:07 +08:00
flask+1
cszhiyue
2016-09-20 20:55:03 +08:00
flask 根据需要
lilydjwg
2016-09-20 21:07:53 +08:00
Tornado, 异步的,不需要开一堆进程 /线程来跑。一个核开一个进程就好。
简单,没有 Flask 和 Django 那么多东西,易上手(特别是做 JSON API )。而且你也有异步编程的经验。
另外我用过 Flask ,特别讨厌它的 g 和 request 这种「全局」变量。刚开始用着方便,但是很容易犯下严重的设计错误( 必要地耦合到这些变量上)。
lilydjwg
2016-09-20 21:08:21 +08:00
@lilydjwg 打漏字了,应该是「不必要地」。
Gem
2016-09-20 21:19:11 +08:00
推荐 bottle 不多啊
wuxqing
2016-09-21 08:18:14 +08:00
flask +1 插件、轮子比较多
putianxi
2016-09-21 09:18:32 +08:00
有个新框架叫做 hug , https://github.com/timothycrosley/hug, 看着挺不错,基于 aiohttp

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

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

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

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

© 2021 V2EX