我想向Flask应用程序中的每个请求添加一个uuid。在其他框架中,我只需要添加一个中间件,即可向请求中添加键/值,但我似乎无法弄清楚如何在Flask中做到这一点。
import flask
import uuid
class RequestMiddleware:
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
flask.g['uuid'] = uuid.uuid4()
return self.app(environ, start_response)
def create_app():
app = Flask(__name__)
app.wsgi_app = RequestMiddleware(app.wsgi_app)
return app
问题是我对g
的使用引发了可怕的RuntimeError: Working outside of application context.
。这很有意义,因为我们仍在设置应用程序。但是,似乎没有一种方法可以通过中间件访问g
或request
。