重新初始化烧瓶扩展

时间:2020-06-30 11:28:16

标签: flask flask-mongoengine

我正在用烧瓶。我定义了一些路由,这些路由很昂贵,因为它们需要访问数据库并进行冗长的计算。数据库连接依赖于Flask-Mongoengine扩展,该扩展依赖于不是线程安全的PyMongo。

因此,我的想法如下:

@blueprint.route("/refresh/data", methods=['GET'])
def refresh_data():
    cache.clear()

    with Pool(4) as p:
        print(p.map(func=f, iterable=["recently", "mtd", "ytd", "sector"]))

获取一个小池并调用函数f。函数f基于

def f(name):
    print(current_app.extensions)
    print(current_app.config)

    current_app.extensions["mongoengine"] = MongoEngine(app=current_app)
    print(current_app.extensions)

    get(address="reports/{path}/json".format(path=name))
    get(address="reports/{path}/html".format(path=name))
    return name

这里的问题是,无法再次初始化MongoEngine的init_app。实际上,扩展只能被初始化一次,但是在多个线程上需要扩展而不是线程安全又会发生什么呢?

0 个答案:

没有答案