flask - 当 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 。有更好的解决方案吗?谢谢。
解决方案
推荐阅读
- sql-server - 执行 SQL 任务输出参数 vs ResultSet
- android - 我的意图有问题,它不起作用
- flutter - 颤振 shared_preferences 有多大?
- kendo-ui - 如何在 kendo-treeview 中获取 kendo 生成的节点列表
- css - 将子 div 的位置保持到父背景图像
- javascript - 仅当值 = 0 时才显示 div
- java - 尝试使用多个资源会导致声纳 qube 问题
- java - 如何使用条件数组过滤数组
- r - 开关不会从上传的文件中找到列,除非上传的文件是同时创建的
- excel - 从一行数据创建多个 Outlook 约会