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

我 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)

https://stackoverflow.com/questions/15083967/

相关文章:

c - 如何在C程序中列出目录中的文件?

python - 如何更改 seaborn 轴或图形级别图的图形大小

python - 使用 url_for() 在 Flask 中创建动态 URL

linux - git中钩子(Hook)的符号链接(symbolic link)

python - 规范化数据框的列

python - 如何从 Python 中的字典中提取所有值?

python - 如何从 Python 中的 URL 读取图像数据?

linux - 如何为长路径制作 "alias"?

python - 在 Linux 上通过 Python 脚本截取屏幕截图

linux - 将 cron 选项卡设置为工作日的特定时间