Обновление обратных вызовов для сюжетной черты - PullRequest
0 голосов
/ 01 октября 2019

Я работал над Dash и kafka вместе. Я могу напечатать значения, полученные от потребителя Kafka, в виде графика. Здесь я создал объект потребителя Kafka. И вызываю данные из объекта obj в цикле, чтобы получить данные от потребителя Kafka.

, когда данные не производятся, выдается ошибка, сообщающая:

Callback error updating example-graph.figure

Я хочу остановить эту ошибку или обработать эту ошибку, чтобы отобразить сообщение «Нет данных получено»

код:

import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output,State
from dash.exceptions import PreventUpdate
import matplotlib.pyplot as plt
from kafka import KafkaConsumer
import pandas as pd
from datetime import datetime
consumer = KafkaConsumer('mytest',bootstrap_servers=['myip:9092'])

def consume(msg):
   time2 = []
   msg1 = str(msg)
   data_frame = msg1
   data_frame = data_frame.reindex(data_frame.index.drop(0))
   return data_frame

 app = dash.Dash(__name__)
 app.config.suppress_callback_exceptions = True
 c=pd.DataFrame()
 global d 
 d = pd.DataFrame()
#print(d['time'])
app.layout =html.Div([
    html.Div([ 
    html.Center(
    html.H1('Data Visualization Tool')),
    html.Hr()]),
html.Div(children=[
html.Center(html.H3(children='Vehicle Speed', id='first')),
dcc.Interval(id='timer', interval=1000),
html.Div(id='dummy'),
dcc.Graph(
        id='example-graph',
    )],className="five columns"),])

@app.callback([Output('example-graph', 'figure')],
          inputs=[Input('timer', 'n_intervals')])

def update_graph(n_clicks):
print(n_clicks)
global d
    for index,msg in enumerate(consumer):
        c = consume(msg.value)
        d = d.append(c,ignore_index = True)
        d = d[-20:]
        return {
                        'data': [{'x': d['1'],'y':  d['2'],'type': 'line', 'name': 'Data1'},]}
  }             
if __name__ == '__main__':
app.run_server(debug=True)

Обратные вызовы всегда 1000 мс. И отобразить ошибку на экране

Callback error updating example-graph.figure

График должен отображать любое сообщение, которое не содержит данных или не может получить данные, когда производитель остановлен.

Заранее спасибо.

...