Web服务-用于创建RESTful Web服务的Node与python

我正在为移动应用程序创建REST API后端。 我很难在python中的Twisted矩阵和Nodejs中的Express Framework之间做出决定。

我已经看过几个参考文献:

  1. Python REST框架建议
  2. Web +移动应用程序的技术堆栈
  3. REST API的最佳语言/框架

就像街上的每个其他孩子一样,我也有相同的要求:

  1. 易于维护。
  2. 可扩展到大流量。
  3. 应该支持MongoDB / NoSQLs
  4. 应该是安全的,并且易于认证。
  5. Web服务的其他标准要求。

我了解事实:

  1. “它是可扩展的解决方案,而不是技术。”
  2. 任何技术上的良好解决方案都将成功。
  3. 大多数技术堆栈都有值得赞扬的成功案例。

如果我仍然必须选择一种技术而不是另一种技术,那应该是什么? 一方面,Nodejs提供了本机异步和非阻塞I / O功能。 但是twistedmatrix在其小猫中有一些非常成功的故事。 还有其他可能使用python和其他语言的框架。 也欢迎其他建议。

我的具体问题是:我计划在python中使用Twisted Matrix来构建RESTful API。 由于我具有python和django的经验,因此代码非常简洁。 我应该选择Node或其他技术堆栈吗?

请不要参与更多讨论。

ps1:要对移动应用程序有所了解,可以将其转换为基于地理位置的大规模消息传递。 REST API必须处理空间计算。

ps2:我准备接受信仰的飞跃。

jerrymouse asked 2020-07-30T16:41:42Z
3个解决方案
39 votes

考虑到您在问题中所说的一切,并且您愿意接受信仰的飞跃。 我想我有答案:

  • 我自己是一名python-django开发人员,由于您要处理的问题,我一开始不喜欢erlang

  • 在将成为大型系统组成部分的地理应用程序中,最终实现应用程序的第一阶段时,您将遇到并发和优化问题。

  • 我认为您应该毫无疑问地选择erlang [可能会花费一些时间,但将是最好的解决方案],这就是为什么:

    • 本质上是由于javascript的设计解决了您将面临的大多数性能问题。
    • 您不需要像erlang这样的任何代理服务器来为其提供服务,它将再次为您节省开销。
    • erlang配合使用时,效果非常好,再次可作为出色的缓存后端。

    • 您可以通过postgres中的erlang Web服务器获得与erlang等效的性能。

简而言之,erlang通过设计同步工作,并且erlangpostgres允许使用棘手的线程运行nosqldb-为什么不选择与解决您所针对的特定问题固有的技术?

的确,考虑到开发人员的生产力,我不希望在网站开发中预先选择erlang。 但是我要说的是,我们应该使用erlang真正解决问题的方法,即先解决方案再解决技术(如您在问题中所引用的)。

这是一个问题,例如为什么在拥有erlang这样的关系数据库时,为什么要使用erlang? 您知道使用postgres不能做的事情的答案,可以像使用mongo那样使用2989525600018367497491做的事情,反之亦然。

因此,您的问题区域是erlang的本机区域,因此似乎没有必要尝试用erlang重新发明轮子。

注意事项:

  • 由于erlang是一项新技术,因此您将面临初步的摩擦。
  • 最初对于python开发人员而言,erlang可能更难维护。
  • 信念的跃进是必须的,因为您要以此为长期目标,而不是短期的好处,那就是节省时间在久经考验的技术上。

举个例子 :

  • Facebook在其所有网页上使用erlang,但在聊天中使用固有的并发erlang
  • 考虑erlang会比考虑python仿真更具逻辑性。
Yugal Jindle answered 2020-07-30T16:43:17Z
20 votes

您的问题很大程度上取决于不完全是技术性的子问题,因为从纯粹技术性的角度讲,两个提议的解决方案之间几乎没有任何实际的性能差异。 您需要询问的问题大致如下:

1)我最常使用哪种语言?

2)我更喜欢用哪种语言写作?

3)如果要吸引更多人参与该项目,他们将如何回答前两个问题?

4)哪种语言具有更好/更全面的库来处理项目中将出现的常见任务?

5)在早期阶段我会考虑的大多数托管环境中,更容易找到/设置哪种语言/环境。

甚至不要问自己“如果我的项目成为下一个Facebook,哪种技术栈将是最佳选择?”。 如果您足够幸运地达到了这一目标,那么您将不会使用最初使用的同一技术堆栈。 不要尝试过早优化。

ebohlman answered 2020-07-30T16:44:05Z
3 votes

您还应该考虑以下事实:如果与Node一起使用,则可以在服务器端和客户端(如果需要)中使用相同的语言,这可能是一大优势。 在这种情况下,当您获得JavaScript经验后,项目的两面都会受益。

bobek answered 2020-07-30T16:44:25Z
translate from https://stackoverflow.com:/questions/12513236/node-vs-python-for-creating-restful-webservices