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

时间:2018-01-27 19:10:40

标签: python-2.7 java-ee amazon-elastic-beanstalk

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

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

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

在我的代码中,我创建了一个调用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脚本?

1 个答案:

答案 0 :(得分: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()));