미들서버에서 액션 주소를 FastAPI 서버로 전달하고, FastAPI 서버에서 해당 액션 주소를 기반으로 데이터를 처리하거나 필드로 전송하는 방식을 구현하려면 다음과 같이 두 FastAPI 서버를 구성하면 됨.
미들서버 FastAPI
미들서버는 특정 액션 주소를 클라이언트(다른 FastAPI 서버)로 전달하는 역할.
from fastapi import FastAPI
import httpx
app = FastAPI()
@app.post("/send-action")
async def send_action(action_url: str, payload: dict):
"""
액션 URL과 데이터를 클라이언트 서버로 전달.
"""
try:
async with httpx.AsyncClient() as client:
response = await client.post(action_url, json=payload)
return {"status": "success", "response": response.json()}
except Exception as e:
return {"status": "error", "message": str(e)}
Python
복사
클라이언트 FastAPI
미들서버에서 전송한 액션 URL 및 데이터를 받아 처리.
from fastapi import FastAPI, Request
app = FastAPI()
@app.post("/receive-action")
async def receive_action(request: Request):
"""
미들서버에서 데이터를 수신하고 처리.
"""
try:
data = await request.json()
# 액션 데이터 처리 로직
action_field = data.get("action_field", "default_value")
result = {"processed_field": f"Processed {action_field}"}
return {"status": "success", "result": result}
except Exception as e:
return {"status": "error", "message": str(e)}
Python
복사
구현 흐름
1.
미들서버의 요청
•
/send-action 경로로 클라이언트 서버의 액션 URL과 데이터를 전달.
•
예시 요청:
{
"action_url": "http://client-server-ip:8000/receive-action",
"payload": {"action_field": "example"}
}
JSON
복사
2.
클라이언트 서버의 처리
•
/receive-action 경로에서 데이터를 수신.
•
데이터 검증 및 처리 후 결과 반환.
테스트 방법
•
미들서버를 실행 후 http://localhost:8000/send-action에 POST 요청.
•
요청 내용:
{
"action_url": "http://localhost:8001/receive-action",
"payload": {"action_field": "example"}
}
JSON
복사
•
클라이언트 서버에서 /receive-action 요청 처리 확인.
추가 기능
•
요청 및 응답 검증을 위한 Pydantic 모델 추가.
•
HTTP 요청 실패 시 재시도 로직 추가.
•
비동기 작업으로 처리 속도 향상.
위 코드로 시작하여 서버 간 액션 전송 로직을 확장할 수 있다.
안녕하세요
•
한국전자기술연구원 김영광입니다.
•
관련 기술 문의와 R&D 공동 연구 사업 관련 문의는 “glory@keti.re.kr”로 연락 부탁드립니다.
Hello 
•
I'm Yeonggwang Kim from the Korea Electronics Research Institute.
•
For technical and business inquiries, please contact me at “glory@keti.re.kr”