dash python 加载然后稍后更新
dash python load then update later
我对 dash 有点陌生,python 所以请原谅我,如果有什么可以简化或需要更改的地方,请告诉我。
问题
我想在文本中显示一个数字并每 10 分钟更新一次该数字。我已经成功地做到了这一点,但问题是我希望它立即加载然后每十分钟更新一次...但是当应用程序首次启动时加载此文本需要 10 分钟。
我觉得我需要为回调添加一个 while/if 逻辑,但我不确定。这是 link 到 result
代码见下方
如果你希望它是可重现的,你可以在 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)
Dash community 给了我一个很好的解决方案。见下文:
from datetime import datetime
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
def serve_layout():
return html.Div(
[dcc.Interval(id="interval", interval=10000), html.P(id="output")]
)
app = dash.Dash()
app.layout = serve_layout
@app.callback(Output("output", "children"), [Input("interval", "n_intervals")])
def display_time(n):
return datetime.now().strftime("The time is: %H:%M:%S")
if __name__ == "__main__":
app.run_server()
我对 dash 有点陌生,python 所以请原谅我,如果有什么可以简化或需要更改的地方,请告诉我。
问题
我想在文本中显示一个数字并每 10 分钟更新一次该数字。我已经成功地做到了这一点,但问题是我希望它立即加载然后每十分钟更新一次...但是当应用程序首次启动时加载此文本需要 10 分钟。
我觉得我需要为回调添加一个 while/if 逻辑,但我不确定。这是 link 到 result
代码见下方
如果你希望它是可重现的,你可以在 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)
Dash community 给了我一个很好的解决方案。见下文:
from datetime import datetime
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
def serve_layout():
return html.Div(
[dcc.Interval(id="interval", interval=10000), html.P(id="output")]
)
app = dash.Dash()
app.layout = serve_layout
@app.callback(Output("output", "children"), [Input("interval", "n_intervals")])
def display_time(n):
return datetime.now().strftime("The time is: %H:%M:%S")
if __name__ == "__main__":
app.run_server()