Python Streaming 서버 예제 (Flask와 Redis 사용)
28 Dec 2021 | Python RabbitMQStreaming 서버 예제 (Flask와 Redis 사용)
브라우저에서 http://localhost:8001/message에 접속하면 데이터가 스트리밍 되는 것을 확인할 수 있습니다.
예제 코드
import json
import flask
import redis
from flask import Flask
app = Flask(__name__)
app.debug = True
def stream_message(channel):
r = redis.Redis()
p = r.pubsub()
p.subscribe(channel)
for message in p.listen():
if message['type'] == 'message':
yield 'data: ' + json.dumps(message['data'].decode()) + '\n\n'
@app.route('/message', methods=['GET'])
def get_messages():
return flask.Response(
flask.stream_with_context(stream_message('snowdeer_channel')),
mimetype='text/event-stream'
)
if __name__ == '__main__':
app.run(port=8001, use_reloader=False)
publisher.py
import redis
import datetime
r = redis.Redis(host="localhost", port=6379, db=0)
msg = f"[{datetime.datetime.now()}] hello, snowdeer +___+"
r.publish(channel="snowdeer_channel",
message=msg)
print(f"Message is sent !!\n{msg}")