我在寻找这个问题的合理答案:
https://news.ycombinator.com/item?id=4207314
from flask import request
from flask import request ... @app.route('/'): def index(): return "Hello from %s" % request.args.get('name')
@app.route('/'): def index(request): return "Hello from %s" % request.args.get('name')
Armin对上述问题的回答不是很令人满意:
很长一段时间以来,我一直是线程本地人的强烈反对者,但我最终不得不承认,它们让事情变得更容易,而不是更难。
...
事实上,你可以做“应用程序ctx”堆栈。顶部mydatabase_connection`从任何地方获取数据库连接都非常有用。
...
TL;DR:你不能没有线程局部变量,或者你有一个可怕的API。
我不认为_app_ctx_stack.top.mydatabase_connection
比request.app.my_database_connection
好。
您不应该只考虑控制器(您可以在控制器中访问请求对象)。它在应用程序的其他层中也很重要(想象一下,有重要业务规则的可重用服务层)