Concept Flow - Teardown hooks
Request starts
Before request handlers
View function runs
Response generated
Teardown hooks run
Request ends
This flow shows how Flask runs teardown hooks after the response is ready, to clean up resources.
from flask import Flask, g app = Flask(__name__) @app.teardown_request def teardown(exception=None): print('Teardown hook runs')
| Step | Event | Exception | Action | Output |
|---|---|---|---|---|
| 1 | Request starts | None | Start processing request | No output |
| 2 | View function runs | None | Process request logic | Response created |
| 3 | Response ready | None | Prepare to send response | Response sent |
| 4 | Teardown hook runs | None | Run teardown_request function | Prints 'Teardown hook runs' |
| 5 | Request ends | None | Cleanup complete | No output |
| Variable | Start | After Step 2 | After Step 4 | Final |
|---|---|---|---|---|
| exception | None | None | None | None |
| g | Empty | May hold request data | Cleared or unchanged | Empty or reset |
Flask teardown hooks run after each request finishes. Use @app.teardown_request decorator. They receive an optional exception argument. Useful for cleaning resources like DB connections. Run even if errors occur in the view. Executed after response is sent.