我已经阅读了烧瓶文件,发现了这个:
13.3上下文的位置
根据需要创建和销毁应用程序上下文。它永远不会在线程之间移动,也不会在请求之间共享。
这对我来说真的很不错。我认为应用程序上下文应该与应用程序保持一致,并为应用程序的所有请求共享对象。
因此,我深入研究源代码,发现当推送请求上下文时,如果当前应用程序不是与请求关联的应用程序,则将创建并推送应用程序上下文。
所以似乎应用程序上下文堆栈可能有多个不同的应用程序上下文推送同一个应用程序?为什么不使用单例应用程序上下文?为什么应用程序上下文的生命周期如此短暂'?可以为这样的应用程序上下文做些什么?
答案 0 :(得分:4)
应用程序上下文并不意味着用于在请求之间共享。它是在设置请求上下文之前以及在请求已经被拆除之后共享上下文的。是的,这意味着可以为不同的请求激活多个g
个上下文。
您无法共享“全局”状态,因为WSGI应用程序不仅限于单个进程。许多WSGI服务器使用多处理来扩展请求处理,而不仅仅是线程。如果您需要跨请求共享“全局”状态,请使用类似数据库或memcached的内容。