我有一个工作的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响应的方法,但对我来说,这个问题已经解决了。在
目前没有回答
相关问题 更多 >
编程相关推荐