我有main.py
和app.py
。app.py
包含返回app
对象的create_app()
。CCD_ 6调用CCD_。我必须在main.py
中构造一个可变的全局对象。此全局对象将app
作为输入参数。在python中,这对我来说似乎很复杂。当应用程序启动时,我如何可能实现这种全局对象构造?
具体来说,我使用的是flask_oidc
,需要在main.py
中构造一个oidc = OpenIDConnect(app)
,并使oidc
对象在其他controller.py文件中可用。此oidc
对象将存储用户信息,并验证用户是否已通过身份验证。
任何建议和见解都将不胜感激。
您可以创建一个模块,在应用程序开始时初始化oidc
对象
helper.py
oidc = None # global instance
def init_oidc(app):
# initalise the oidc here and assign to the global variable
global oidc
oidc = OpenIDConnect(app)
return oidc
main.py
import init_oidc from helper
app = create_app()
# init only once at the start of the application
oidc = init_oidc(app)
在其他控制器文件中sample_controller.py
import oidc from helper
# use the same oidc here
另一种选择是创建一个带有属性oidc的singleton类,如果您需要其他方法和oidc,这将非常有用