我今天早些时候遇到过这种技术,但我不确定它是如何运作的。我不认为这个例子真的很重要,但我正在使用Django作为应用程序。
def post_to_endpoint(request, key=None):
if not hasattar(post_to_endpoint, '__my_memo__'):
post_to_endpoint.__my_memo__ = {
"key1": "url" + "path",
"key2": "url2" + "path",
"key3": "url3" + "path",
"key4": "url4" + "path",
}
if key:
url = post_to_endpoint.__my_memo__.get(key, None)
if url:
# make my request here
# return the response
我理解在这个人为的例子中,它可能是一种微观优化。在我的函数中,我只会在每次调用时重新创建dict
。在基本层面上,我理解这个dict
被隐藏在一个名为func_dict
的东西中,但我真正理解的是它是如何存在于请求之间的。
我从PHP背景中理解的是,整个框架是在每个请求上初始化的,但是Python / Django / WSGI可能不是这样吗?我也很难理解所有这些是如何与进程/线程一起运行的,也许这些信息在那里保持活着?我本来期望这样的东西需要在某种持久缓存中完成,但显然事实并非如此。
另外,其他提到的备忘录的海报也可以通过import
字典实现,但我也不明白它们在请求之间会如何生效。
答案 0 :(得分:0)
Daniel Roseman在评论中回答了这个问题:
"你自己已经回答了这个问题。 WSGI应用程序在单独的进程(或许多进程)中运行,该进程在许多请求中持续存在"