파이썬 FastAPI + JAVA (Jpype) 예제
글. 수알치 오상문
예제가 동작하려면 JVM 환경이 설치되어 있어야 합니다.
[ jpype_util ]
import jpype
import atexit
import time
jvm_started = False
def start_jvm():
global jvm_started, jvm
if not jvm_started:
print("JVM start...")
jpype.startJVM(jpype.getDefaultJVMPath())
jvm_started = True
def close_jvm():
global jvm_started
if jvm_started:
print("JVM quit...")
jpype.shutdownJVM()
jvm_started = False
atexit.register(close_jvm) # program exit
[ main.py ]
from fastapi import FastAPI
from jvm_util import start_jvm, jvm_started
import jpype
app = FastAPI()
@app.on_event("startup") # FastAPI start event
async def startup_event():
start_jvm() # JVM init
@app.on_event("shutdown") # FastAPI end event
async def close_jvm():
jvm.shutdownJVM()
@app.get("/")
async def read_root():
if jpype.isJVMStarted():
java_util = jpype.JPackage('java').util
array_list = java_util.ArrayList()
array_list.add("Hello")
array_list.add("world!")
if isinstance(array_list, java_util.ArrayList):
print("array_list is a JAVA Array")
return {"ArrayList": str(array_list)}
else:
return {"Error": "None JVM"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=80)
[ FastAPI 실행 ]
python main.py
[ 웹 접속 ] http://127.0.0.1/docs
루트 라우트 선택하고 실행하면 아래첨 응답이 온 것을 확인할 수 있다.
'FastAPI' 카테고리의 다른 글
FastAPI 실행 방법 정리 (0) | 2024.12.12 |
---|---|
백엔드씬에 긴장감을 주는 FastAPI 프레임워크 (0) | 2024.05.02 |
Python Unit Testing | FastAPI with Pytest Tutorial (0) | 2023.11.14 |
FastAPI, 인증 API (Authentication APIs) (0) | 2023.11.10 |
How to Use FastAPI: A Detailed Python Tutorial (1) | 2023.10.23 |