【问题标题】:Flask variable for app_contextapp_context 的烧瓶变量
【发布时间】:2020-07-13 11:51:34
【问题描述】:

每次使用自己编写的 CLI 命令时,都会调用 app_context,从而连接额外的蓝图,以及在项目启动时调用的记录器。 是否有任何列表或变量可以从 WHERE 写入到 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命令时不调用该函数可以添加什么条件?

【问题讨论】:

    标签: python python-3.x flask


    【解决方案1】:

    如果要禁用 app.logger 日志,则无需设置 log level。让我们检查一下:

    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)。

    【讨论】:

      猜你喜欢
      • 2020-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多