Java 在命令行或Rest客户端中执行脚本

Java 在命令行或Rest客户端中执行脚本,java,python,web-services,architecture,Java,Python,Web Services,Architecture,我有一个java web应用程序,需要使用python脚本。web应用程序将为脚本提供一个文件作为输入,并将一些文本作为输出 我有两个选择: 用HTTP包装python脚本,并将其作为REST服务从web应用程序调用 只需从web应用程序执行命令行 我应该选择哪个选项?为什么?此脚本不会被任何其他应用程序使用 尝试这两种方法,但尝试在命令行中执行,以便逐行了解输出。 执行该行时,可以在该行中找到任何错误 在rest服务中,它将返回一个Http响应。我个人建议将Python代码包装在Http层中,

我有一个java web应用程序,需要使用python脚本。web应用程序将为脚本提供一个文件作为输入,并将一些文本作为输出

我有两个选择:

  • 用HTTP包装python脚本,并将其作为REST服务从web应用程序调用
  • 只需从web应用程序执行命令行

  • 我应该选择哪个选项?为什么?此脚本不会被任何其他应用程序使用

    尝试这两种方法,但尝试在命令行中执行,以便逐行了解输出。 执行该行时,可以在该行中找到任何错误
    rest
    服务中,它将返回一个Http响应。

    我个人建议将Python代码包装在Http层中,并将其转换为restweb服务。我毫不怀疑,许多成功的应用程序都是通过从命令行调用脚本编写的,但我认为,在web服务的自由度方面,有几件事情确实很好。显然,将Python应用程序放在web服务中是一种更“面向服务”的方式,因此,这样做会给您带来SOA的典型好处似乎是合理的

    这可能适用于您的情况,也可能不适用于您的情况,但如果这些考虑因素都不适用,则似乎表明这是一种“两种选择都不会那么糟糕”的情况

    我认为使用web服务的最大好处是可伸缩性。如果命令行应用程序可以占用大量服务器资源,那么最好让它在与web应用程序分离的服务器上运行。这样,当其他用户执行导致调用Python应用程序的操作时,不使用与此Python应用程序交互的应用程序部分的其他用户的体验不会降低。将Python代码放在web服务后面也会使集群更容易。如果您可以从缓存中获得一些好处,那么也可以很容易地利用HTTP和代理服务器中的缓存机制


    另一件可能很好的事情是可测试性。有很多很好的工具可以用来测试web应用程序与web服务通信的常见情况,而当应用程序调用命令行应用程序时,彻底测试应用程序可能需要做更多的工作。

    这取决于情况,有些人可能会在暴露脚本和链接rest调用方面遇到问题,另一方面,使用单独的rest调用可以提高可伸缩性和可移植性,您可以更容易地从python切换到其他东西。还有第三个选项,当您将问题标记为java时,我假设您的后端在java下运行,您是否尝试过jython或其他portsEven如果您使用HTTP包装它,那么当REST调用到达服务器时,您是否正在执行命令行?