Check if Flask request context is available

flask, logging, python, werkzeug

Solution

Use `has_request_context` or `has_app_context`.

if has_request_context():
    # request is active

Alternatively, `current_app`, `g`, `request`, and `session` are all instances of `LocalProxy`. If a proxy is not bound, it will be `False` when treated as a boolean.

if request:
    # request is active

Problem

I want to log some data from context variables (`request`, `session`) when logging during a Flask request, but use default behavior if not. I'm using a `try ... except` block in `logging.formatter`. Is there a better way to check for a request context? ``` try: record.user = session['user_name'] record.very_important_data = request.super_secret except Exception: record.user = None ```

Original source