Flask - 如何存储所有蓝图之间可访问的值

Flask - How to store a value accessible among all blueprints

如何在 flask 运行 开始之前使用外部程序创建的值?

如果不可能,那么如何在通过 blueprint.register 注册的文件中使用在 Flask 应用程序开始时在 __init__.py 中分配的变量?

例如:

__init__.py

   var1 = "SOMETHING"

routes.py

  if var1 = "SOMETHING":
     call api1 
  else
     call api2

基本上问题是:如何在 __init__.py 和通过 blueprint.

连接的那些 *.py 文件之间共享变量

通常的做法是为此目的使用环境变量。 在 unix 系统上,您可以使用另一个实用程序轻松设置变量:

export VARIABLE="SOMETHING"

然后您可以通过以下方式在您的代码中访问此类变量:

os.getenv("VARIABLE", "some default value")

因此,您的示例如下所示:

import os

var1 = os.getenv("VARIABLE", "SOMETHING ELSE")
if var1 = "SOMETHING":
   call api1 
else
   call api2

您可以在其文档中找到有关如何将环境变量与 flask 一起使用的更多详细信息: https://flask.palletsprojects.com/en/1.1.x/config/


使用环境变量的优点是易于在容器化环境中为您的应用程序提供配置,例如在 kubernetes 或 docker 中。