The reason why a thing can be bracketed,
1. Class
2. Function
3. Object
4. Method
middleware example
from flask import Flask app = Flask(__name__) app.secret_key = 'sfergeheh' @app.route('/x1',methods=['GET','POST']) def index(): return 'x1' class Middleware(object): def __init__(self,old_wsgi_app): """ Executed automatically when the server starts :param old_wsgi_app: """ self.old_wsgi_app = old_wsgi_app def __call__(self, environ, start_response): """ every time a request comes :param about: :param start_response: :return: """ print('before') from flask import session,request obj = self.old_wsgi_app(environ, start_response) print('after') return obj if __name__ == '__main__': app.wsgi_app = Middleware(app.wsgi_app) # app.run() """ 1. Execute app.__call__() 2. Call the app.wsgi_app method """