赞
踩
在 Spring Boot 中调用 Python 脚本或工程,主要有以下几种方式:
ProcessBuilder
或 Runtime
执行 Python 脚本这是最直接的方法,使用 Java 的 ProcessBuilder
或 Runtime.getRuntime().exec()
来执行 Python 脚本。
package com.oncloudsoft.zbznhc.ajpc.service; import org.springframework.stereotype.Service; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @Service public class PythonScriptService { public String runPythonScript(String propertyJson) { try { ProcessBuilder processBuilder = new ProcessBuilder("python", "/home/sunyuhua/workspace/shbgit/zb-znhc/src/main/resources/python/identify_property.py", propertyJson); Process process = processBuilder.start(); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; StringBuilder output = new StringBuilder(); while ((line = reader.readLine()) != null) { output.append(line); } int exitCode = process.waitFor(); if (exitCode != 0) { // 处理非零退出代码 return "Error executing script"; } return output.toString(); } catch (IOException | InterruptedException e) { e.printStackTrace(); return "Error: " + e.getMessage(); } } }
Jython 是一个 Python 的 Java 实现,可以让你直接在 Java 虚拟机上运行 Python 代码。
将 Python 脚本或应用封装为一个 Web 服务,然后通过 HTTP 请求进行交互。
通过消息队列(如 RabbitMQ、Kafka)在 Java 和 Python 之间进行异步通信。
使用 gRPC 或 Apache Thrift 进行跨语言的 RPC(远程过程调用)。
选择哪种方法取决于你的具体需求。对于简单的任务,直接使用 ProcessBuilder
或 Runtime
可能就足够了。如果你的 Python 代码和 Java 代码需要频繁和紧密地交互,可能需要考虑 Jython(如果 Python 代码兼容 Python 2.x),或者实现一个 Web 服务。如果你的应用需要高并发处理能力,消息队列或 gRPC/Thrift 可能是更好的选择。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。