반응형
이번에 대쉬보드를 구축하는 PoC 를맡게 되었는데 이게 외부와 통신이 되어야해서 고생좀 했다.
백엔드 1도 모르는 멍청이가 이것저것 찾는데 시간이 오래걸리더라 막상 구현은 얼마 안걸림;;; 일단 전역변수를 사용해서 해결하는 방법이 있더라 그냥 썩혀두기 아까워 코드 조금이나마 남겨둘려고 적는다.
post.py
import json
import requests
# 변환하려는 데이터
data = {
'x': [1, 2, 3, 4,3,2,1],
'y': [10, 11, 12, 13,10,11,12]
}
# Python 객체를 JSON 문자열로 변환
json_data = json.dumps(data)
# 서버 URL
url = 'http://127.0.0.1:8050/postdata'
# 서버에 POST 요청을 보냄
response = requests.post(url, data=json_data)
# 응답 출력
print(data)
print(response.text)
print(response.status_code)
app.py
import dash
from dash import dcc, html
from dash.dependencies import Input, Output
from flask import Flask, request
import json
import plotly.graph_objects as go
# Flask 서버와 Dash 앱 생성
server = Flask(__name__)
app = dash.Dash(__name__, server=server)
# Dash 앱 레이아웃 설정
app.layout = html.Div([
dcc.Graph(id='live-graph', animate=True),
dcc.Interval(
id='graph-update',
interval=1*1000, # in milliseconds
n_intervals=0
)
])
@server.route('/postdata', methods=['POST'])
def get_data():
global global_data
global_data = json.loads(request.data) # JSON 데이터 파싱
return 'Success', 200
@app.callback(Output('live-graph', 'figure'), [Input('graph-update', 'n_intervals')])
def update_graph_scatter(n):
global global_data
# 그래프를 업데이트
print(global_data)
fig = go.Figure(
data=[
go.Scatter(
x=global_data['x'], #global_data.get('x', []),
y=global_data['y'], #global_data.get('y', []),
name='Scatter',
mode='lines+markers'
)
],
layout=go.Layout(
title='서버로부터 받아온 데이터 시각화',
)
)
return fig
if __name__ == '__main__':
app.run_server(debug=True)
이게 데코레이터를 분리 안하고 사용하니까 작동이 됐다 안됐다 그래서 전역변수로 변수를 변경해줬다.
반응형
'개발' 카테고리의 다른 글
javascript 문법 정리 (0) | 2025.02.23 |
---|---|
Dash보드 만들기 (0) | 2024.03.01 |
운영계, QA계, 개발계 3단계로 나뉘어져야 하는 이유 (0) | 2023.12.27 |