-
[FastAPI] 파이썬 분석 엔진 기지 건설! RabbitMQ 메시지 수신 성공기 (feat. zsh 트러블슈팅)프로젝트/개인프로젝트 2026. 3. 10. 09:46
안녕하세요! 오늘은 스마트 식단 관리 에이전트 프로젝트의 두 번째 주인공, FastAPI 분석 엔진(Analysis Engine)의 기초를 다져보았습니다.
NestJS가 보낸 분석 요청 메시지를 RabbitMQ라는 기차역에서 낚아채는 비동기 컨슈머(Consumer)*를 구현하며 겪은 에러 해결입니다.
🏗️ 1. 왜 FastAPI를 선택했나요?
우리 프로젝트의 핵심은 메뉴판 이미지 분석(OCR & AI)입니다. 🤖
- Python 생태계: AI 및 이미지 처리 라이브러리가 가장 풍부한 언어를 선택했습니다.
- 성능: 비동기(Async) 처리에 최적화된 FastAPI를 통해 여러 분석 요청을 효율적으로 처리하기 위함입니다.
🛠️ 2. 오늘의 에러 (Troubleshooting)
❌ Issue 1: "python 명령어를 찾을 수 없대요!"
가상환경을 만들려는데 zsh: command not found: python 에러가 발생했습니다.
- 원인: 최신 Mac/Linux 환경에서는 보안과 버전 관리를 위해 python 대신 python3를 명시적으로 사용해야 합니다.
- 해결: python3 -m venv venv 명령어로 가상환경을 성공적으로 생성했습니다! 🪄
❌ Issue 2: zsh의 깜찍한 방해, no matches found
pip install fastapi[all]을 입력했더니 설치가 되지 않고 에러가 떴습니다.
- 원인: 터미널 쉘인 zsh가 대괄호([])를 파일을 찾는 특수 문자로 오해해서 발생한 문제였습니다.
- 해결: pip install "fastapi[all]" 처럼 따옴표로 감싸주어 해결 완료!
💻 3. 핵심 코드: RabbitMQ 리스너 구현
aio-pika 라이브러리를 사용해 NestJS가 보낸 메시지를 실시간으로 기다리는 코드를 작성했습니다.
async def process_message(message: aio_pika.IncomingMessage): async with message.process(): # 메시지 수신 및 데이터 파싱 body = json.loads(message.body.decode()) print(f"🔍 [분석 시작] Task ID: {body['taskId']}")
📸 4. 테스트 결과
① 드디어 만난 교신 성공 로그!

- 설명: NestJS에서 쏜 Task ID가 파이썬 터미널에 예쁘게 찍혔습니다.
- 포인트: 서로 다른 언어로 만들어진 두 서버가 RabbitMQ라는 기차역에서 완벽하게 대화하는 모습입니다!
② RabbitMQ 관리자 전광판 확인

- NextJS에서 보낸 데이터를 가지고 있는 모습입니다.

- 설명: Consumers: 1 이라는 숫자가 보이시나요? 우리 FastAPI 분석 엔진이 "나 여기 준비됐어!"라고 손을 들고 있는 증거입니다.
- 설명: menu_analysis_queue 바구니가 예쁘게 생성되어 메시지를 담을 준비를 마쳤습니다.
🏁 마치며
오늘은 MSA 구조의 핵심인 비동기 이벤트 기반 통신을 직접 구현해 보았습니다. 환경 세팅부터 통신 성공까지, 에러를 해결하는 과정과 함께 이러한 결과를 얻으니까 즐거운 개발이었습니다.
이전에 MSA 프로젝트에서 kafka를 사용할 때에는 연결이 끊기는 오류가 자주나고 설정을 조금만 변경해도 연결이 끊겨서 힘들었는데
RabbitMQ는 그런게 없어서 다행히 금방 끝난 것 같습니다.추후에 이렇게 비동기 통신한 것을 프론트까지 구현하게 되어서 통신이 잘 되는 걸 보면 뿌듯할 것 같습니다.
'프로젝트 > 개인프로젝트' 카테고리의 다른 글
[FastAPI] 분석 엔진에 '눈', EasyOCR 연동 및 트러블슈팅 (Saga Step 2) (0) 2026.03.10 🚀 [NestJS] Saga 패턴의 시작: RabbitMQ와 함께하는 비동기 메뉴 분석 API 구현기 (0) 2026.03.08 [NestJS] 회원가입부터 사용자 취향 설정까지: 인증 및 유저 모듈 통합기 (F-03, F-04) (0) 2026.03.07 🥗 [NestJS/Prisma] 식단 관리 서비스의 꽃, 주간 리포트 API 구현 및 트러블슈팅 (0) 2026.03.05 Meal API Troubleshooting(API 보안 강화) (0) 2026.03.04