Я немного новичок в dash и python, так что прости меня и дай мне знать, есть ли что-то, что можно упростить или нужно изменить.
Проблема
Я хочу показатьномер в тексте и обновлять этот номер каждые 10 минут.Я успешно сделал это, но проблема в том, что я хочу, чтобы он загружался немедленно, а затем обновлялся каждые десять минут ... но тогда требуется 10 минут, чтобы загрузить этот текст при первом запуске приложения.
IУ меня такое чувство, что мне нужно добавить логику while / if для обратного вызова, но я не уверен.Вот ссылка на результат
См. Ниже код
Если вы хотите, чтобы он был воспроизводимым, вы можете установить любое значение для переменной данных в get_data ()
#Imports for dash
import dash
from dash.dependencies import Output, Event
import dash_core_components as dcc
import dash_html_components as html
#imports for database connection and data processing
from sshtunnel import SSHTunnelForwarder
import pymysql as db
import pandas as pd
# ssh variables go here
host =
localhost =
ssh_username =
private_key =
# database variables go here
user=
password=
database=
#This is the function for processing a query
def query(q):
#function for getting data from database
def get_data():
df_test = query('call example') #calls a procedure which returns a number
data = df_test['test'].loc[0] # selects the result from the dataframe
data_insert = 'This month we have {} new clients!!!'.format(data) #inserts the result into the string
return data_insert
app = dash.Dash(__name__)
app.layout = html.Div(
[
html.Div(id='my-div', children='''
'''.format(get_data())),
dcc.Interval(
id='update',
interval=10* 60000 # I would like for this to be 10 minutes
)
]
)
@app.callback(Output('my-div', 'children'),
events=[Event('update', 'interval')])
def update_data(): # function for returning the new data
return get_data()
if __name__ == '__main__':
app.run_server(debug=True)