Глобальный вход в систему `manage.py` для каждого запроса в Flask API - PullRequest
0 голосов
/ 19 марта 2020

Я хочу обрабатывать вход в систему каждого запроса в моем Flask API. Я написал сценарии на manage.py для обработки success log, а также Exception log.

Вот мой manage.py файл:

"""Manage all command related to the micro-service."""
import traceback

from flask import request
from app import app, manager

@app.after_request
def after_request(response):
    """ Logging after every request. """
    # This avoids the duplication of registry in the log,
    # since that 500 is already logged via @app. error handler.
    request_id = request.headers.get('X-Request-ID')  # event['requestContext']['requestId']
    if response.status_code != 500:
        app.logger.info(
            "%s [%s] %s %s",
            request.remote_addr,
            datetime.utcnow().strftime("%d/%b/%Y:%H:%M:%S.%f")[:-3],
            request.user_agent,
            request_id
        )
    return response


@app.errorhandler(Exception)
def exceptions():
    """ Logging after every Exception.
        Reference url github.com/sivel/flask-lambda
    """
    tb = traceback.format_exc()
    request_id = request.headers.get('X-Request-ID')  # event['requestContext']['requestId']
    app.logger.error(
        "%s [%s] %s %s %s",
        request.remote_addr,
        datetime.utcnow().strftime("%d/%b/%Y:%H:%M:%S.%f")[:-3],
        request.user_agent,
        tb,
        request_id
    )
    return request


if __name__ == '__main__':
    manager.run()

Мои вопросы:

  1. Это правильный путь? или Предложите лучший способ в зависимости от производительности.
  2. можно ли получить AWS API gateway идентификатор запроса через этот request.headers.get('X-Request-ID')?
...