【问题标题】:Best Python Web Framework for my API Server Needs满足我的 API 服务器需求的最佳 Python Web 框架
【发布时间】:2012-01-17 23:32:55
【问题描述】:

我正在开发两个系统:

  1. 一个系统会不断从第三方数据源中检索经济数据并将其推送到 MySQL 数据库中(使用 sqlalchemy)
  2. 允许任何人通过 JSON AJAX API(例如类似于 Yelp 或 Yahoo API)查询数据库中数据的服务器

我有两个主要问题:

  1. 我应该在 2) 中使用哪个 Python 框架? Pyramid 是我的第一选择,但如果你强烈建议反对它或支持 Django 或 Pylons 之类的其他东西,我肯定愿意考虑它。
  2. 我应该分别开发这两个系统吗?还是应该 1) 是 2) 的一部分,在框架内运行(例如使用 crontab 或 celery)?

【问题讨论】:

  • 我建议使用活塞运行 django。这将为您提供一个很好的 RESTful 平台,可以开箱即用地处理 json。
  • 关于 2:系统似乎足够小,可以将它们放在一个项目中。但是,如果您预计 Web 端会增长,最好将它放在一个单独的项目中。这样升级就不会破坏数据收集工具。
  • 谢谢!为什么我要在 2) 中使用 REST 而不是 SOAP 或纯 JSON?我不确定哪个会更好..
  • +1 在带有活塞的 django 上。 Piston 为您处理后台请求,让您轻松定义 url 和简单的 CRUD 样式处理程序。开箱即用的事件只会为您将操作映射到您的模型。已内置身份验证。另外还有 django-authkey 可以为活塞生成 api 密钥。使用活塞设置多格式 API 的工作要少得多。支持 json xml yaml 甚至可以让你编写自己的发射器

标签: python mysql api frameworks


【解决方案1】:

取决于您所处的阶段,我建议开发 2 个系统,因为从第三方提取数据的负载和处理 API 的负载会有所不同。如果需要,您可以将它们扩展为不同类型的节点。

Django-Tastypie (https://github.com/toastdriven/django-tastypie) 还不错,它支持所有的 JSON、XML 和 YAML。您也可以轻松添加 OAuth。不过,此时 Django 本身可能对您的需求有点沉重。

【讨论】:

  • 感谢您的回复!首先,我明白你所说的拥有两个不同的系统。但是,最初,这些系统将在同一台机器上和同一数据库上运行。与有 2 个应用程序访问数据库相比,1) 和 2) 是否没有相同的应用程序访问数据库使数据库访问速度更快?我也同意 Django - 我喜欢它,但我觉得它更适合像维基百科这样需要管理等的系统。 Django 真的是我想要的吗?
  • 如果我正在设计原型或构建一个 Alpha,我只会编写一个应用程序,但将门打开以将其拆分为两个。而就访问速度而言,如果您打算使用单个数据库,我认为您是对的,1 个应用程序使其运行速度相对更快。但是您应该不时地将数据库的副本从#1(读/写)复制到只读#2,然后用于测试版或生产。我不是建议或推动 Django,但我喜欢美味的派,因为您需要花费的时间绝对是最少的,以启动和运行一个看起来像样的 API。还要考虑 Flask,它是轻量级和快速的。
  • Django 并不需要面向一种或另一种系统。它就像拥有 sqlalchemy,但具有许多其他功能,如模板、url 路由等。使用你想要的,忽略其余的。我认为它包含您在一个地方设计一次模型并为其提供 api 前端所需的一切。您可以编写命令行脚本来重用模型并以各种方式为数据库提供数据
【解决方案2】:

您可能想查看web2py's 新功能以轻松生成RESTful API's,尤其是它的parse_as_restsmart_query 功能。您也可以考虑使用 web2py 的 database abstraction layer 来处理 #1。

如果您需要任何帮助,请在mailing list 上提问。

【讨论】:

  • 添加一个说明你是 web2py 的核心贡献者的注释会很好。
  • 首先,我不会将自己描述为核心贡献者(尽管我确实做出了贡献)。第二,为什么?我不是在表达意见或批评替代方案。我只是提供了一些详细说明可能适合需要的功能的链接,OP 可以轻松评估这些链接以确定它是否是一个可行的选项。我的状态无关紧要。
  • 因为我没有看到太多从事产品 X 工作的人推荐产品 Y,而 X 和 Y 是竞争产品。这就是为什么它被称为有偏见的意见。这就是为什么添加免责声明是一般做法的原因。天哪,我不是想冒犯你或任何事情,只是观察一下。
  • 同样,我并不是要冒犯您,只是观察到此处没有真正的免责声明。
  • 我看到你没有回应我关于偏见意见的评论。
【解决方案3】:

我同意 Anthony 的观点,你应该看看 Web2Py。它上手非常容易,学习治愈率非常低,并且易于部署在包括 Linux、Windows 和 Amazon 在内的许多系统上。

到目前为止,我没有发现 Web2Py 不能做的事情。但更重要的是,它会按照您认为应该完成的方式执行操作,因此,如果您不确定,通常猜测就足够了,并且可以正常工作。如果您确实遇到困难,它拥有迄今为止任何 Python Web 框架的最佳和最新文档。

即使它拥有所有强大的功能、易于使用和最新的文档,您也会发现 Google 上的 web2py 用户组就像拥有一个 24 小时值班的付费服务台。大多数问题都会在几分钟内得到解答,Massimo(Web2Py 的原始创建者)不仅会提供帮助,而且会在小组提出新想法、建议和错误修复后的几天内实施。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 2010-10-11
    • 2016-11-09
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    相关资源
    最近更新 更多