python - app_context 的烧瓶变量
问题描述
每次使用自己编写的 CLI 命令时,都会调用 app_context,从而连接额外的蓝图,以及在项目启动时调用的记录器。是否有任何列表或变量可以从调用app_context
发生的地方写入。
__name__
到处都是一样的,总是返回'app'。
project.py
:
from app import create_app, cli
app = create_app()
cli.register(app)
app/__init__.py
:
db = SQLAlchemy()
migrate = Migrate()
def create_app(config_class=Config):
app = Flask(__name__)
app.config.from_object(config_class)
db.init_app(app)
migrate.init_app(app, db)
app.logger.setLevel(logging.INFO)
app.logger.info('Project startup')
return app
app.logger.info('Project startup')
每次我调用 CLI 命令时都会调用。使用CLI命令时不调用该函数可以添加什么条件?
解决方案
log level
如果要禁用app.logger
日志,则无需设置。让我们检查:
app = Flask('')
# app logs are disabled. uncomment to see app logs.
# app.logger.setLevel(logging.INFO)
app.logger.info('Project startup')
因此,您可以log level
使用附加参数进行配置:
def create_app(config_class=Config, log_level=None):
app = Flask(__name__)
app.config.from_object(config_class)
if log_level:
app.logger.setLevel(logging.INFO)
一个更好的方法是使用 2 个不同的配置(第一个 - for web app
,第二个 - for CLI app
)。在这种情况下,您可以自定义任何设置(包括 log level
)。
推荐阅读
- algorithm - minimum columns to be deleted in a matrix to make it row-wise lexicographically sorted
- javascript - 如何在javascript中获取内部数组
- git - Switch off git integration in Sublime Text 3.2
- javascript - 使用 DOM 在 p5js 中自定义按钮
- java - How to secure Spring Data REST associations requests?
- javascript - 无法将属性“innerHTML”设置为 null
- ffi - 具有固定字符串值的配置的 ReasonML 绑定函数
- unity3d - Unity line renderer poor anti-aliasing
- ipad - How to access my local jupyter notebooks over internet
- javascript - 逐行读取文件并在 node.js 中执行分析?