
Dash의
dcc.Interval
컴포넌트는 일정한 시간 간격으로 애플리케이션에 이벤트를 발생시키는 데 사용된다. 이 컴포넌트는 주기적으로 업데이트해야 하는 데이터나 그래프, 혹은 시간에 따라 변경되어야 하는 다른 요소들을 처리할 때 유용하다.dcc.Interval
컴포넌트의 주요 속성
id
: 컴포넌트의 식별자
interval
: 콜백을 발생시키는 시간 간격 (밀리초 단위)
n_intervals
: 인터벌이 실행된 횟수 (기본값은 0)
disabled
: 인터벌을 비활성화할지 여부 (기본값은 False)
기본 사용 예시
다음은
dcc.Interval
을 사용하여 Dash 애플리케이션에서 동적으로 내용을 업데이트하는 간단한 예시이다.from dash import Dash, html, dcc, Input, Output
import datetime
app = Dash(__name__)
app.layout = html.Div([
html.H1('실시간 시계'),
html.Div(id='live-clock'),
dcc.Interval(
id='interval-component',
interval=1000*3, # 단위: milliseconds, 1000 * 1 = 1초
n_intervals=0) # interval을 몇 번 실행했는지 기록하는 역할
])
@app.callback(
Output('live-clock', 'children'), # html.Div(id='live-clock')의 children에 해당
Input('interval-component', 'n_intervals') # dcc.Interval(id='interval-component')의 n_intervals에 해당
)
def update_clock(n):
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 현재 시간을 문자열로 반환
return now
if __name__ == '__main__':
app.run(jupyter_mode='external') # 별도의 브라우저에서 랜더링
이 예시에서는
dcc.Interval
컴포넌트를 사용하여 3초마다 콜백 함수를 실행시킨다. 콜백 함수는 현재 시간을 문자열로 반환하여 live-clock
이라는 ID를 가진 div
의 내용을 업데이트한다.실제 사례: 실시간 데이터 업데이트
dcc.Interval
은 실시간으로 데이터를 업데이트하고 이를 시각화하는 대시보드를 만드는 데에도 유용하다. 예를 들어, 서버의 CPU 사용량이나 메모리 사용량, 혹은 웹사이트의 실시간 트래픽 데이터 등을 주기적으로 업데이트하여 그래프로 표시할 수 있다.이 경우, 데이터를 수집하고 처리하는 로직을
dcc.Interval
의 콜백 함수 내에 구현하고, 이를 통해 그래프나 차트 컴포넌트의 data
속성을 업데이트하면 된다. 이 방법을 통해 사용자는 실시간으로 변화하는 데이터를 시각적으로 확인할 수 있다.dcc.Interval
컴포넌트를 사용함으로써 Dash 애플리케이션을 더 동적이고 상호작용적으로 만들 수 있다. 주기적인 업데이트가 필요한 다양한 상황에서 활용할 수 있다.Share article