Dash dcc.Interval: 일정 시간 간격으로 이벤트 발생

Jan 31, 2024
Dash dcc.Interval: 일정 시간 간격으로 이벤트 발생
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

꼬꼬데이 | 꼬리에 꼬리를 무는 데이터 이야기