【问题标题】:Node.js to Python communication - server or child process?Node.js 到 Python 通信 - 服务器还是子进程?
【发布时间】:2017-01-26 19:33:24
【问题描述】:

我目前在一个主要用 Node.js 编写的项目中,涉及非线性曲线拟合。在尝试使用 Node.js 本身完成这项任务后,我放弃了它,因为它根本不切实际。所以我一直在寻找一种高级语言来解决我面临的数学问题。我不得不在 MATLAB 和 Python 之间做出选择,但由于 Python 现在拥有非常强大的方法并且它是免费的,所以我决定使用 Python。

现在我需要找到一种在 Node.js 和 Python 之间进行通信的方法,而我已经找到了两种完全不同的方法:

  1. 设置 Python 服务器,解决如 here 所述的数学问题
  2. 或从我的 node.js 代码中生成一个子进程,如 here 所述

现在我通常会使用客户端服务器方法,因为在我看来它更干净,因为它将两种语​​言分开。但是既然有人写了一篇关于第二种方法的博客文章,那么它一定有一些优势,对吧?

有人能简单解释一下在这种情况下这两种方法的优缺点是什么吗?

【问题讨论】:

    标签: python node.js client-server ipc


    【解决方案1】:

    这两种方法各有利弊。

    独立服务器

    设置服务器比较耗时,您需要确保 Python 服务器在 Node 应用程序需要与其通信之前启动,如果它停止则必须重新启动它等等。

    另一方面,你有一个很好的分离服务,可以被其他应用使用,如果你需要更高的性能,可以很容易地移动到一个单独的盒子或一组盒子。

    产生一个进程

    生成一个进程比运行一个单独的服务器要容易得多,您始终知道它在您需要时运行。您不必使用启动脚本、重生等管理单独的服务器。

    另一方面,您只能在与 Node 程序相同的机器上运行 Python 程序,如果性能有问题,那么您必须将其设置为单独的服务器才能在不同的服务器上运行它机器或一组机器。

    选择

    选择实际上取决于您自己对未来使用情况和服务器负载的期望。这两种方法都行得通,并且都有不同的强弱方面。

    抽象

    无论如何,以模块的形式抽象出该选择可能很有用,这样您的主代码就不需要知道您做出了哪个选择。这意味着您将来可以改变主意。

    制作一个模块可以很简单,只需将相关代码放在一个单独的.js 文件中,然后从您的主代码中获取该文件。该模块可以导出一个或多个接受回调或返回承诺的函数,只要回调被调用或承诺得到预期的数据,你的主代码就不需要知道幕后发生了什么。

    【讨论】:

      猜你喜欢
      • 2011-06-18
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 2016-08-18
      相关资源
      最近更新 更多