如何在aws弹性beanstalk中从java ee web应用程序运行python脚本?

问题描述 投票:0回答:1

我正在研究一个java ee应用程序,该应用程序进行一些api调用,并将这些api调用的结果以json文件的形式传递给脚本。在本地,我的应用程序工作正常,但当我尝试在AWS Elastic Beanstalk上测试它时,我的项目根本不运行python脚本。

上部署我的Web应用程序时,我选择了作为我的平台并上传了我的.war文件。

由于我的项目很简单,我已经保留了其余的配置。

在我的代码中,我创建了一个调用bash脚本的运行时进程,而bash脚本又运行python脚本。 我的bash脚本如下: #!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" python $DIR/json_to_matches.py $DIR/output.json

我在我的python脚本的开头包含了一个print("Running python script")语句,用于调试目的。

我本地输出的屏幕截图是: enter image description here

但是,当我部署我的应用程序并测试它时,我的日志显示python脚本根本没有被击中。

enter image description here

我在eb cli上检查了我的webroot目录,我的output.json文件是由项目创建的,所以我认为这不是找不到output.json文件或读/写权限的问题。

但是,我是AWS-EB的新手,在部署我的应用程序时可能会出错。我不确定。有谁知道如何在aws-eb环境中从我的Java EE Web应用程序运行python脚本?

python-2.7 java-ee amazon-elastic-beanstalk
1个回答
0
投票

尝试使用Runtime类运行。

 Process p = Runtime.getRuntime().exec("python example.py");

如果python不在你的PATH变量中,则使用python安装目录的地址

 Runtime.getRuntime().exec("/usr/local/bin/python example.py")

您可以读取命令的输出,如下所示:

        BufferedReader stdInput = new BufferedReader(new 
             InputStreamReader(p.getInputStream()));
© www.soinside.com 2019 - 2024. All rights reserved.