python - 什么时候应该使用 Flask.g?

标签 python flask

saw g 将从请求上下文移动到 Flask 0.10 中的应用程序上下文,这让我对 g 的预期用途感到困惑。

我的理解(对于 Flask 0.9)是:

  • g 存在于请求上下文中,即在请求开始时重新创建,并且在请求结束之前可用
  • g 旨在用作“请求黑板”,我可以在其中放置与请求持续时间相关的内容(即,在请求的开头设置一个标志并处理它最后,可能来自 before_request/after_request 对)
  • 除了保持请求级状态之外,g 可以而且应该用于资源管理,即保持数据库连接等。

哪些句子在 Flask 0.10 中不再正确?有人可以指出我讨论更改的原因的资源吗?我应该在 Flask 0.10 中使用什么作为“请求黑板”——我应该创建自己的应用程序/扩展特定线程本地代理并将其推送到上下文堆栈before_request?如果我的应用程序存在很长时间(不像请求)并且资源永远不会被释放,那么在应用程序上下文中进行资源管理有什么意义?

最佳答案

Advanced Flask Patterns ,如 linked by Markus ,解释了 0.10 中对 g 的一些更改:

  • g 现在位于应用程序上下文中。
  • Every request pushes a new application context ,删除旧的,因此 g 仍可用于为每个请求设置标志,而无需更改代码。
  • 应用程序上下文在 teardown_request 被调用后弹出。 (Armin 的演示文稿解释说这是因为创建数据库连接之类的任务是设置请求环境的任务,不应在 before_requestafter_request)

关于python - 什么时候应该使用 Flask.g?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15083967/

相关文章:

python - 根据名称(月)排序字符串列表

python - Paramiko 会为失败的连接抛出什么错误/异常?

python - pandas 排序值以获得 groupby 中每一列的前 5 名

python - 将通用功能放在 Flask 子类中

python - NGINX Unit + Flask = 在可用的应用程序模块中找不到

python - Flask目录结构

python - 使用带有 Flask 的 Authlib 获取和存储刷新 token

Python 找不到我的包 :

python - Pandas Dataframe 中两个日期之间的营业时间(包括节假日)

python - 无法重定向到 flask 中的网址