/
Search

241209_1629_미들서버에서 액션 주소를 FastAPI 서버로 전달하고, FastAPI 서버에서 해당 액션 주소를 기반으로 데이터를 처리하거나 필드로 전송하는 방식

미들서버에서 액션 주소를 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”