[python] Flask-RESTful을 활용한 실시간 데이터 전송 방법

Flask-RESTful은 파이썬에서 RESTful API를 쉽게 개발할 수 있는 프레임워크입니다. 이를 통해 실시간 데이터를 전송하는 방법을 알아보겠습니다.

1. Flask-RESTful 설치

먼저 Flask-RESTful을 설치해야 합니다. 터미널에서 다음 명령을 실행하여 설치합니다.

pip install Flask-RESTful

2. API 엔드포인트 생성

Flask-RESTful에서 API 엔드포인트를 생성하기 위해 다음과 같이 코드를 작성합니다.

from flask import Flask
from flask_restful import Api, Resource

app = Flask(__name__)
api = Api(app)

class RealtimeData(Resource):
    def get(self):
        # 데이터를 실시간으로 생성 또는 가져옴
        data = get_realtime_data()
        return {'data': data}

api.add_resource(RealtimeData, '/api/realtime')

위 예제에서는 /api/realtime 엔드포인트를 생성하여 RealtimeData 클래스를 통해 데이터를 반환합니다. get_realtime_data 함수는 실시간 데이터를 생성하거나 가져오는 함수로, 해당 함수를 구현해야 합니다.

3. 데이터 전송 테스트

Flask 애플리케이션을 실행하여 실시간 데이터 전송을 테스트할 수 있습니다. 터미널에서 다음 명령을 실행합니다.

python app.py

위 명령을 실행한 후, 브라우저나 API 클라이언트 도구를 통해 /api/realtime 엔드포인트에 GET 요청을 보내면 실시간 데이터를 받아볼 수 있습니다.

4. 웹 소켓 활용하기

실시간 데이터 전송에 웹 소켓을 활용하면 더욱 효과적으로 데이터를 전송할 수 있습니다. Flask-SocketIO 등의 라이브러리를 사용하여 웹 소켓을 쉽게 구현할 수 있습니다.

from flask_socketio import SocketIO, emit

socketio = SocketIO(app)

@socketio.on('connect')
def handle_connect():
    # 연결 처리
    pass

def send_realtime_data():
    while True:
        data = get_realtime_data()
        socketio.emit('realtime_data', {'data': data})
        time.sleep(1)

if __name__ == '__main__':
    socketio.start_background_task(send_realtime_data)
    socketio.run(app)

위 예제에서는 flask_socketio에서 제공하는 SocketIO를 사용하여 웹 소켓을 설정하고, send_realtime_data 함수를 백그라운드 스레드에서 실행하며 실시간 데이터를 전송합니다. 클라이언트에서는 realtime_data 이벤트를 리스닝하여 실시간 데이터를 처리할 수 있습니다.

결론

Flask-RESTful을 활용해 실시간 데이터를 전송하는 방법에 대해 알아보았습니다. API 엔드포인트를 생성하고 웹 소켓을 활용하여 실시간으로 데이터를 전송할 수 있습니다. 다양한 프로젝트에서 실시간 데이터를 다루어야 할 때, Flask-RESTful을 활용하여 강력하고 효율적인 솔루션을 개발할 수 있습니다.

참고: Flask-RESTful 공식 문서