首页 > 解决方案 > 是否可以使用 Flask 在服务器请求之间共享复杂对象?

问题描述

我在做一个项目时正在学习 Flask。我对 Python 并不陌生,但我的经验主要扩展到小型实用程序脚本等,所以这比我习惯使用 Python 时要大一些。我有更多使用 Java 的经验,并且在使用该语言的 Web 服务器项目中,我会熟悉为各种服务初始化多个线程安全客户端并保留内存中的引用,以供所有服务器请求使用(因为它们'重新线程安全)。

我在我的 Flask 项目中也有类似的需求,并且我遇到了使用如下g所示的全局变量的推荐模式:

@app.before_request
def before_request():
    if not hasattr(g, 'my_client'):
        g.my_client = the_service.get_the_client()

...初始化客户端。我在该客户端初始化中记录了一些日志,并且每次请求出于任何原因通过服务器时,似乎我的客户端每次都被再次初始化。我不应该对此感到惊讶,因为文档确实说全局的上下文g仅限于每个请求,并且只会持续与请求一样长。

这种数据实际上并不是您将存储在会话或数据库中的数据,因此这种持久性似乎不合适或不可能。那么 Flask 有可能吗? Werkzeug?保留对创建/初始化和在服务器请求之间共享它可能很昂贵的某些对象的引用?是否只需要为每个请求创建新的?

标签: pythonflasksession

解决方案


推荐阅读