如何缓存FlaskAppBuilder视图?

2024-04-25 02:09:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个工作的Flask应用程序,它有非常广泛的SQLite数据库(大约10万个条目)。 根据docs,我正努力用Flask App Builder(FAB)以最简单的方式引导一些模型视图:

class MyModelView(ModelView):
  datamodel = SQLAInterface(MyModel)
  list_columns = ['col1', 'col2']

而不是让他们这样做:

^{pr2}$

它工作得很好。问题是,每次我访问列表视图时,它都是从头生成的-数据库查询、一些FAB处理、模板生成。从主观上讲,这是非常缓慢的(按挂钟计时需要几十秒;我不知道如何正确地分析烧瓶的应用)。在

我认为缓存FAB视图在某一点上可能有助于加快速度,但我不确定如何去做。对于普通视图,我使用烧瓶缓存

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

所以,问题:

如何在FAB模型视图中使用缓存? 有没有一种方法可以加快FAB模型视图的工作?在

谢谢你!在

结果

好的,在研究了FAB源代码之后,我发现可以重新定义ModelView或它的父对象的方法,以获得所需的行为(在我的例子中,限制对列表视图的查询,并使用Flask缓存对其进行缓存)。然而,这需要大量的代码,这违背了使用FAB的全部目的。 结果我搬到了烧瓶管理员。它的外观更简单,不包括内置身份验证,但在我的情况下,它的工作速度更快,只需很少的配置-它解决了我的问题。在

我还是建议在数据量很小的情况下(大约1000条),FAB的功能更丰富,进一步的开发可能会给我们一个非常整洁的产品。在

顺便说一句,我还没有找到缓存FAB ModelView响应的方法,但对我来说,这个问题已经解决了。在


Tags: 方法模型视图数据库应用程序flask列表sqlite