首页 > 解决方案 > 当 Flask 中的外部配置/数据库更改时如何重新创建/重新加载应用程序

问题描述

我正在制作一个服务器来将 Rmarkdown 转换为 Dash 应用程序。这个想法是解析 rmd 文件中的所有参数并进行相应的 Dash 输入。然后添加一个提交按钮,将 rmd 编译为 html 某处并返回 iframe。我使用外部数据库来存储 rmd 路径的信息,以便用户可以动态添加文件。问题是当 rmd 文件更改时,服务器必须重新解析文件并重新创建应用程序并以相同的 url 提供服务。我没有优雅的解决方案。现在我正在做这样的事情。

server = Flask(__name__)

@server.route(“rmd/path:path”):
def convert_rmd_to_dash(path):
  file = get_file_path_from_db(path)
  mtime = get_last_modified_time(file)
  cached_app, cached_mtime = get_cache(path)
  if cached_mtime == mtime:
    return cached_app
  inputs = parse_file(file)
  app = construct_dash_app(inputs)
  return app.index()

def construct_dash_app(inputs):
  app = dash.Dash(
      name,
      server=server,
      routes_pathname_prefix=’/some_url_user_will_never_use/’ + file_name + time.time())
  app.layout = …
  …
  return app

它有效,但我在 /some_url_user_will_never_use 下获得了许多路由规则。直接覆盖 rmd/path 可能是可能的,但根据 Stackoveflow 的回答感觉很hacky 。有更好的解决方案吗?谢谢。

标签: flaskplotly-dash

解决方案


推荐阅读