[python] FastAPI에서 메시지 큐와 연동하기

FastAPI는 빠르고 효율적인 웹 애플리케이션 개발을 위해 설계된 Python 웹 프레임워크입니다. 이번 포스트에서는 FastAPI와 메시지 큐를 연동하는 방법에 대해 알아보겠습니다.

메시지 큐란?

메시지 큐는 시스템 간에 비동기적으로 데이터를 교환할 수 있는 중간 매개체입니다. 보낼 데이터를 큐에 넣고, 해당 데이터를 받아 처리하는 워커(worker)가 큐에서 데이터를 가져와 처리합니다. 이를 통해 애플리케이션에서 발생하는 작업을 비동기적으로 처리할 수 있습니다.

FastAPI와 메시지 큐 연동하기

FastAPI에서 메시지 큐와 연동하는 방법은 다음과 같습니다.

  1. 먼저, 필요한 메시지 큐 라이브러리를 설치합니다. 대표적인 메시지 큐 라이브러리로는 RabbitMQ, Apache Kafka, Redis 등이 있습니다.
  2. FastAPI 애플리케이션에서 해당 메시지 큐 라이브러리를 사용하는 코드를 작성합니다.
  3. 애플리케이션에서 메시지를 송신하거나 수신하기 위한 큐에 연결하고, 필요한 작업을 처리합니다.

아래는 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_messagereceive_message 함수를 통해 메시지를 송수신합니다.

마무리

FastAPI는 높은 성능과 생산성을 제공하는 웹 프레임워크이며, 메시지 큐와 연동하여 애플리케이션의 비동기적인 작업을 처리할 수 있습니다. 이를 통해 애플리케이션의 확장성과 유연성을 높일 수 있습니다.

더 자세한 내용은 아래의 링크에서 확인할 수 있습니다.