首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Java调用Python脚本。我应该用码头吗?

从Java调用Python脚本。我应该用码头吗?
EN

Stack Overflow用户
提问于 2018-05-05 16:40:27
回答 2查看 1.1K关注 0票数 0

我们的项目中有一个Java应用程序,我们想要的是调用一些Python脚本并返回它的结果。做这件事最好的方法是什么?

我们希望隔离Python执行,以避免影响Java应用程序。可能,文档化Python是最好的解决方案。我不知道有什么别的办法。

然后,一个问题是如何从Java调用它。

据我所知,有几种方法:

  1. 在Docker内部启动一些web服务器,它接受来自Java的REST调用,运行Python脚本并通过REST将结果返回给Java。
  2. 通过Docker处理请求和响应。
  3. 使用向Docker发送REST请求,然后Docker将其转换为Docker内部Python脚本的Stdin/Stdout。

在Docker中运行的Java应用程序与Python连接的最有效和正确的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-06 07:52:22

你不需要码头工人。有几个选项,您应该根据您的Java应用程序正在做什么来选择。

  1. 如果应用程序是一个基于swing、want或直接提供UI的客户端,那么您将希望将python功能封装在REST/HTTP调用中。
  2. 如果Java应用程序是一个服务器/webapp--在Tomcat、JBoss或其他应用程序容器中执行--那么您只需将python封装在exec调用中即可。为此目的,请参阅Java和Java。
票数 2
EN

Stack Overflow用户

发布于 2018-05-05 22:05:22

您可以尝试使用OpenFaas将您的python脚本与顶部的top服务器进行对接。

您可以使用完整的OpenFaas堆栈来创建映射到单个容器的单个API函数,也可以只使用OpenFaas web组件。

一个简单的Dockerfile可以是这样的:

代码语言:javascript
复制
FROM python:3.4-alpine

ADD . /workdir
WORKDIR /workdir

ADD https://github.com/openfaas/faas/releases/download/0.7.9/fwatchdog /usr/bin
RUN chmod +x /usr/bin/fwatchdog

ENV fprocess="python yourPythonScript.py"
CMD ["fwatchdog"]

构建并运行它:

代码语言:javascript
复制
$ docker build . -t dockerized-python-script
[....]
$ docker run -p 8080:8080 dockerized-python-script

您可以通过带有明文参数的http与脚本“交谈”:

代码语言:javascript
复制
$ curl yourserver:8080 -d "param1 param2 param3"
Some output from your script

如果要讨论JSON,则需要相应地修改yourPythonScript.py以管理输入和输出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50191768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档