app_context的烧瓶变量

时间:2020-07-13 11:51:34

标签: python python-3.x flask

每次使用自写的CLI命令时,都会调用app_context,从而连接了额外的Blueprint,以及在项目启动时调用的记录器。 我可以从哪里写任何列表或变量来调用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
每次调用CLI命令时都会调用

app.logger.info('Project startup')。 使用CLI命令时可以添加哪些条件以使其不调用此功能?

1 个答案:

答案 0 :(得分:0)

如果要禁用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个不同的配置(第一个-用于web app,第二个-用于CLI app)。在这种情况下,您将可以自定义任何设置(包括log level)。