在fastapi中间件中请求创建特定的全局类对象

问题描述 投票:0回答:1

我想创建一个响应模式的 pydantic 类,在其中存储信息,并且从多个脚本捕获该信息到该对象,为此我想创建一个全局

utils.py
文件来存储该对象,我可以简单地将其导入其他脚本中。

问题是,由于它是一个全局对象,因此它在各种 python 对象之间共享,但我不希望它被共享。它对于每个请求都必须是唯一的,并且将从中间件本身开始使用该对象。

python fastapi fastapi-middleware
1个回答
0
投票

如果您需要为每个请求创建一个新的对象实例,那么您需要在

utils.py
中做的是提供一个创建对象的函数,而不是在那里实际创建对象。

您可能在

utils.py
中有这样的代码:

my_class_object = MyClass() # or whatever you need to do to create and initialize it

相反,提供这样的函数:

def get_my_class_object():
    return MyClass() # or whatever

然后在您的请求代码中,不要执行

from utils import my_class_object
,而是执行
from utils import get_my_class_object
并为每个请求调用
my_class_object = get_my_class_object()

© www.soinside.com 2019 - 2024. All rights reserved.