[python] 파이썬 Dash로 실시간 데이터를 갱신하는 방법은 무엇인가요?

파이썬의 Dash는 대화형 웹 애플리케이션을 만들 수 있는 훌륭한 도구입니다. 실시간으로 데이터를 갱신하려면 몇 가지 방법이 있습니다.

방법 1: 콜백을 사용하여 실시간으로 데이터 업데이트

Dash 애플리케이션에서는 콜백(callback)을 사용하여 특정 이벤트(예: 시간 간격 또는 사용자 입력)에 대한 반응으로 데이터를 업데이트할 수 있습니다. 예를 들어, dcc.Interval을 사용하여 일정한 시간 간격으로 데이터를 업데이트할 수 있습니다.

import dash
from dash.dependencies import Input, Output
import dash_core_components as dcc
import dash_html_components as html
import plotly.express as px
import random
import datetime
import pandas as pd

# 샘플 데이터 생성
df = pd.DataFrame({
    "time": [datetime.datetime.now() + datetime.timedelta(minutes=i) for i in range(10)],
    "value": [random.randint(1, 100) for _ in range(10)]
})

app = dash.Dash(__name__)

app.layout = html.Div([
    dcc.Graph(id="live-update-graph"),
    dcc.Interval(
        id='interval-component',
        interval=1000,  # 1초마다 업데이트
        n_intervals=0
    )
])

@app.callback(
    Output('live-update-graph', 'figure'),
    [Input('interval-component', 'n_intervals')]
)
def update_graph_live(n):
    # 샘플 데이터 업데이트
    df.loc[len(df)] = [datetime.datetime.now(), random.randint(1, 100)]
    fig = px.line(df, x="time", y="value", title='실시간 데이터 갱신')
    return fig

if __name__ == '__main__':
    app.run_server(debug=True)

위의 예제는 1초마다 그래프가 업데이트되도록 하는 간단한 Dash 애플리케이션입니다.

방법 2: 웹소켓 사용

실시간 데이터 업데이트를 위해 Dash 외부에서 웹소켓을 사용하여 데이터를 전달할 수 있습니다. 이를 통해 데이터를 실시간으로 전송하고 애플리케이션을 업데이트할 수 있습니다.

이러한 방법을 사용하면 데이터가 변경될 때마다 애플리케이션에 자동으로 반영될 수 있습니다.

결론

Dash를 사용하면 여러 가지 방법으로 실시간으로 데이터를 갱신할 수 있습니다. 콜백을 사용하거나 웹소켓을 통해 데이터를 전달하는 방법 등 여러 가지 방법 중 적합한 방법을 선택하여 실시간 데이터 업데이트를 구현할 수 있습니다.

참고 자료