Python 如何缓存Flask App Builder视图?

Python 如何缓存Flask App Builder视图?,python,caching,flask,flask-appbuilder,Python,Caching,Flask,Flask Appbuilder,我有一个可以工作的Flask应用程序,它有相当广泛的SQLite数据库(~100k个条目)。 我正在努力使用Flask App Builder(FAB)以最简单的方式引导一些模型视图,具体如下: 而不是像这样启用它们: appbuilder.add_view(MyModelView, 'Models') 它很好用。问题是,每次我访问列表视图时,它都是从头开始生成的-DB查询、一些晶圆厂处理、模板生成。而且它主观上非常慢(挂钟需要几十秒;我不知道如何正确地分析Flask应用程序) 我认为在某个时

我有一个可以工作的Flask应用程序,它有相当广泛的SQLite数据库(~100k个条目)。 我正在努力使用Flask App Builder(FAB)以最简单的方式引导一些模型视图,具体如下:

而不是像这样启用它们:

appbuilder.add_view(MyModelView, 'Models')
它很好用。问题是,每次我访问列表视图时,它都是从头开始生成的-DB查询、一些晶圆厂处理、模板生成。而且它主观上非常慢(挂钟需要几十秒;我不知道如何正确地分析Flask应用程序)

我认为在某个时候缓存晶圆厂视图可能有助于加快速度,但我不确定如何去做。对于普通视图,我使用烧瓶缓存:

@app.route('/some_route')
@cache.cached()
def view_function():
    data = time_consuming_operation()
    return render_template('template.html', data=data)
那么,问题:

如何将缓存与FAB ModelView一起使用? 有没有办法加快FAB ModelView的工作速度

谢谢大家!

结果

好的,在探索了FAB源代码之后,我发现可以重新定义ModelView或其父级的方法以获得所需的行为(在我的例子中,限制对列表视图的查询并使用Flask缓存缓存)。然而,这需要大量的代码,这违背了使用FAB的全部目的。 因此,我转到Flask Admin。它的外观更简单,不包括内置身份验证,但在我的情况下,它的运行速度更快,配置非常少-它解决了我的问题

我仍然建议在数据量较小(约1000条)的情况下尝试FAB,因为它的功能更丰富,而且它的进一步开发可能会为我们提供一个非常简洁的产品


顺便说一句,我仍然没有找到缓存FAB ModelView响应的方法,但对于我来说,现在这个问题已经结束。

请阅读并相应地重写您的问题。谢谢您的建议。我做了一些编辑。现在的配方已经足够好了吗?通常情况下,@HardBite会尝试自己,展示自己所做的事情,然后寻求SO社区的帮助。因此,在您“如何将缓存与FAB ModelView结合使用?有没有办法加快FAB ModelView的工作?”之前,您实际上应该展示您所做的工作(基于您对SO、Google、books等的研究)。顺便说一句,概要分析与概要分析Python是一样的。你可以看看我的答案@boardrider谢谢你的评论。我会尽快编辑我的问题,因为我将能够花更多的时间来解决它。虽然这是我2年多以来的第一个问题,但我还是读了这么多。有人可能会认为,除非我真的找不到解决方案,或者找不到可用解决方案的提示,否则我不会提问。一个是正确的(:无论如何,在查看了FAB文档和源代码后,我看到了一些使其工作更快的方法和缓存视图方法,但它涉及到对FAB的非常深入的干预。这大大降低了使用此库的便利性。
@app.route('/some_route')
@cache.cached()
def view_function():
    data = time_consuming_operation()
    return render_template('template.html', data=data)