我正在研究一个java ee应用程序,该应用程序进行一些api调用,并将这些api调用的结果以json文件的形式传递给python脚本。在本地,我的应用程序工作正常,但当我尝试在AWS Elastic Beanstalk上测试它时,我的项目根本不运行python脚本。
在aws-eb上部署我的Web应用程序时,我选择了tomcat作为我的平台并上传了我的.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")
语句,用于调试目的。
但是,当我部署我的应用程序并测试它时,我的日志显示python脚本根本没有被击中。
我在eb cli上检查了我的webroot目录,我的output.json文件是由项目创建的,所以我认为这不是找不到output.json文件或读/写权限的问题。
但是,我是AWS-EB的新手,在部署我的应用程序时可能会出错。我不确定。有谁知道如何在aws-eb环境中从我的Java EE Web应用程序运行python脚本?
尝试使用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()));