Flask переменная для app_context - PullRequest
0 голосов
/ 13 июля 2020

Каждый раз, когда вы используете самописную команду CLI, происходит вызов app_context, в результате которого подключается дополнительный Blueprint, а также регистраторы, которые вызываются при запуске проекта. Есть ли какой-нибудь список или переменная, в которые я могу писать, откуда происходит вызов app_context. __name__ везде одинаково, всегда возвращает «приложение».

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?

1 Ответ

0 голосов
/ 16 июля 2020

Вам не нужно устанавливать 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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...