[python] FastAPI에서 메시지 큐와 연동하기
FastAPI는 빠르고 효율적인 웹 애플리케이션 개발을 위해 설계된 Python 웹 프레임워크입니다. 이번 포스트에서는 FastAPI와 메시지 큐를 연동하는 방법에 대해 알아보겠습니다.
메시지 큐란?
메시지 큐는 시스템 간에 비동기적으로 데이터를 교환할 수 있는 중간 매개체입니다. 보낼 데이터를 큐에 넣고, 해당 데이터를 받아 처리하는 워커(worker)가 큐에서 데이터를 가져와 처리합니다. 이를 통해 애플리케이션에서 발생하는 작업을 비동기적으로 처리할 수 있습니다.
FastAPI와 메시지 큐 연동하기
FastAPI에서 메시지 큐와 연동하는 방법은 다음과 같습니다.
- 먼저, 필요한 메시지 큐 라이브러리를 설치합니다. 대표적인 메시지 큐 라이브러리로는
RabbitMQ
,Apache Kafka
,Redis
등이 있습니다. - FastAPI 애플리케이션에서 해당 메시지 큐 라이브러리를 사용하는 코드를 작성합니다.
- 애플리케이션에서 메시지를 송신하거나 수신하기 위한 큐에 연결하고, 필요한 작업을 처리합니다.
아래는 FastAPI와 RabbitMQ를 연동하는 예제 코드입니다.
from fastapi import FastAPI
import pika
app = FastAPI()
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
@app.post('/message')
async def send_message(message: str):
channel.basic_publish(exchange='', routing_key='my_queue', body=message)
return {'status': 'Message sent successfully'}
@app.get('/message')
async def receive_message():
method_frame, header_frame, body = channel.basic_get(queue='my_queue')
if method_frame:
channel.basic_ack(method_frame.delivery_tag)
return body.decode()
else:
return {'status': 'No messages in the queue'}
if __name__ == '__main__':
uvicorn.run(app, host='0.0.0.0', port=8000)
위 코드에서는 pika
라이브러리를 사용하여 RabbitMQ와 연결하고, send_message
와 receive_message
함수를 통해 메시지를 송수신합니다.
마무리
FastAPI는 높은 성능과 생산성을 제공하는 웹 프레임워크이며, 메시지 큐와 연동하여 애플리케이션의 비동기적인 작업을 처리할 수 있습니다. 이를 통해 애플리케이션의 확장성과 유연성을 높일 수 있습니다.
더 자세한 내용은 아래의 링크에서 확인할 수 있습니다.