Python 如何使用数据库中的新数据更新plotly dash应用程序

Python 如何使用数据库中的新数据更新plotly dash应用程序,python,flask,psycopg2,plotly-dash,Python,Flask,Psycopg2,Plotly Dash,我有一个Flask应用程序(Plotly Dash),它从每天更新的数据库中获取数据。部署在AWS上,我使用gunicorn/nginx运行应用程序。问题是,应用程序中使用的数据来自最新的gunicorn运行,而不是数据库中的最新数据 我认为一个解决方案是在gunicorn命令中添加一个带有计时器的属性(例如--reload),以便每天自动重新启动gunicorn。这是可能的,甚至还有其他的解决办法吗 解决方案:您可以向gunicorn发送重新加载的信号。要手动试用,您可以使用killall-s

我有一个Flask应用程序(Plotly Dash),它从每天更新的数据库中获取数据。部署在AWS上,我使用gunicorn/nginx运行应用程序。问题是,应用程序中使用的数据来自最新的gunicorn运行,而不是数据库中的最新数据

我认为一个解决方案是在gunicorn命令中添加一个带有计时器的属性(例如--reload),以便每天自动重新启动gunicorn。这是可能的,甚至还有其他的解决办法吗


解决方案

您可以向gunicorn发送重新加载的信号。要手动试用,您可以使用
killall-s1 gunicorn
,要每天重新加载,您可能需要使用类似AWS或特定于AWS的服务。好像是在那上面


使用
killall
是次优的,因为它对进程的名称进行操作。如果名称更改(例如,gunicorn重命名自身以用应用程序名称标识),或者如果有多个gunicorn正在运行,则可能会中断。但是,只要这是服务器的唯一用例,就应该可以了。

是修改应用程序,使其在一段时间后重新启动,还是在触发器(例如,在/service/restart上传入HTTP请求)上重新启动?在页面刷新时重新运行脚本基本上是理想的。您可以在flask路由中打包脚本吗?数据处理需要多长时间,是从数据库中提取数据,还是需要一些“更长”的处理?您可以显示一些flask路由和DB连接的代码吗?过程是,-使用psycopg2打开与DB的连接,-创建游标,-使用游标运行4个单独的查询。来自查询的数据存储在本地数据框中,根据特定需求进行聚合,然后可视化。整个过程可能需要2分钟。没有Flask路由,我初始化了一个Flask(name)服务器,该服务器承载一个Plotly-Dash应用程序。您可以将您的解决方案发布到其中,作为您自己问题的答案(并接受它)吗?这样看来,这个问题有了解决办法,希望能对其他人有所帮助。