0

So, there are 3 concepts:

  • Application Context - stored in g
  • Session Context - stored in session (stores data across requests, may use cookies)
  • Request Context - ???

Couldn't find in Flask's docs.

I also looked in the guide: https://pythonise.com/feed/flask/python-before-after-request - they seem to confuse request context with session context.

My code (its pattern):

def handle_path1(event, request_context):
    return gen_response(event, request_context)

app = Flask(__name__)
app.add_url_rule('/path1', '/path1', handle_path1)

@app.after_request
def after_request_response_audit(response):
    request_context = ???SOMEHOW_GET_REQUEST_CONTEXT???()
    logging.info('%s %s' % (
        request_context['response_measure1'], 
        request_context['response_measure2']
    ))

@app.after_request
def after_request_response_measure2(response):
    request_context = ???SOMEHOW_GET_REQUEST_CONTEXT???()
    request_context['response_measure2'] = measure_response2(response)

@app.after_request
def after_request_response_measure1(response):
    request_context = ???SOMEHOW_GET_REQUEST_CONTEXT???()
    request_context['response_measure1'] = measure_response1(response)

The question is how to do ???SOMEHOW_GET_REQUEST_CONTEXT???().

Andrey.S
  • 21
  • 4
  • You can just use the Flask request module ```from flask import request``` and then access it with something like ```request.data``` – Kevin Müller Oct 18 '19 at 06:56
  • @KevinMüller this seems hackish, as according to docs `request.data` may contain incoming data. – Andrey.S Oct 18 '19 at 07:12

1 Answers1

2

Try this! It is thread safe

from flask import request
@app.after_request
def after_request_response_measure1(response):
    request_context = request # Not needed
    request_context['response_measure1'] = measure_response1(response)
Tim Ludwinski
  • 2,704
  • 30
  • 34
ChickenSoups
  • 937
  • 8
  • 18