Concept Flow - Context lifecycle execution
Start Request
Create Request Context
Push Context
Handle Request
Pop Context
End Request
This flow shows how Flask creates and manages the request context during a web request lifecycle.
from flask import Flask, request app = Flask(__name__) @app.route('/') def index(): return f"Path: {request.path}"
| Step | Action | Context State | Result |
|---|---|---|---|
| 1 | Start Request | No context | Waiting for request data |
| 2 | Create Request Context | Request context created | Context holds request info |
| 3 | Push Context | Context active | Context is now accessible globally |
| 4 | Handle Request | Context active | Function 'index' runs, accesses request.path |
| 5 | Return Response | Context active | Response with path string generated |
| 6 | Pop Context | Context removed | Context cleaned up, no longer accessible |
| 7 | End Request | No context | Request lifecycle complete |
| Variable | Start | After Step 2 | After Step 3 | After Step 6 | Final |
|---|---|---|---|---|---|
| request context | None | Created | Active | Removed | None |
| request.path | N/A | N/A | Available | Unavailable | N/A |
Flask Context Lifecycle: 1. Start request, no context. 2. Create request context with request data. 3. Push context to make it active. 4. Handle request using context (e.g., request.path). 5. Return response. 6. Pop context to clean up after request.
before_request function in the context lifecycle?before_requestafter_request cleans up after requests, error handlers manage errors, and routes define URLs.before_request runs before request [OK]g object to store data unique to each request.g inside before_request ensures data is set up before route handlers run.g object inside a before_request function -> Option Ag stores request data [OK]g for request data, not globals [OK]/hello?
from flask import Flask, g
app = Flask(__name__)
@app.before_request
def before():
g.message = 'Hi'
@app.route('/hello')
def hello():
return g.message + ' there!'before_request functiong.message to 'Hi' before the route runs.g.message + ' there!', which becomes 'Hi there!'.g.message set before route [OK]g data used in routes [OK]g.message is not set yetbefore_request runs before routesg attributeg outside a request context?
from flask import Flask, g
app = Flask(__name__)
g.message = 'Hello'
@app.route('/')
def index():
return g.messageg is assignedg.message = 'Hello' is set outside any request or app context.g is only available during a request context; accessing it outside causes an error.g outside a request causes a runtime error -> Option Dg only valid inside requests [OK]g only inside request functions [OK]g variables globally outside requestsg with global variablesbefore_request to mark start timeg.start_time before the request runs.after_request to calculate duration and logg.start_time and log it, then return the response.before_request to store start time in g, and after_request to calculate and log duration -> Option BgPass the test and this pattern moves unknown