python - 使用 Dash Plotly 更新加载
问题描述
所以这是我最近部署的一个简单的网络应用程序:https ://covid19-visualisation-seb.herokuapp.com/
我使用了 Dash 框架并使用 Heroku 进行了部署。
我使用 df =pd.read_csv('owid-covid-data.csv')
加载数据集。最新的数据集可以在这里找到:
https://covid.ourworldindata.org/data/owid-covid-data.csv
数据每天都在更新。问题是,如果我只df
为链接设置变量,它只会在服务器启动时从源获取数据一次。因此,如果我想每天保持数据最新,我就必须每天重新启动服务器,这是无稽之谈。
Dash 文档提供了更新页面加载功能,如下所示:
import datetime
import dash
import dash_html_components as html
def serve_layout():
return html.H1('The time is: ' + str(datetime.datetime.now()))
app.layout = serve_layout
if __name__ == '__main__':
app.run_server(debug=True)
它在我刷新页面时起作用(时间会自行更新)
但我想在页面加载时重新分配一个变量,不知道该怎么做我得到一个错误。我试过这样的事情:
import dash
import pandas as pd
app = dash.Dash()
df = ''
def get_data():
global df
df = pd.read_csv('https://covid.ourworldindata.org/data/owid-covid-data.csv')
app.layout = get_data
if __name__ == '__main__':
app.run_server(debug=True)
有什么帮助吗?
解决方案
Plotly dash 有一个称为的功能dash_core_components.Interval
,它将定义在您的应用程序中触发回调的时间间隔。显然,您必须设置回调功能才能使用它。检查下面的文档,它非常彻底。您还将在应用程序底部看到,他们建议实施时间过期缓存来处理长期应用程序的内存瓶颈。
推荐阅读
- android - 在 MVVM 中处理硬编码数据的正确方法是什么?
- java - 如何在 JMenuItem 单击上保存 JTable 数据
- logback - Logback 在运行时添加 appender
- apache-spark - 带有 Mongo DB API 的 Cosmos DB 的 Spark/Databricks 数据写入问题
- java - 如何通过 ref 从我的 Firebase 获取一个对象数据
- javascript - Chrome 扩展窗口创建错误:无法读取未定义的属性“创建”
- reactjs - 在 Ubuntu 上分离 React js 项目
- vue.js - A-Frame+Vue:无法绑定 a-box 的“可见”属性
- node.js - 我们可以用 knex 发布一个对象数组吗?
- sql - 无效的列名 - 表中的所有列