擅长:python、mysql、java
<p>受<a href="https://stackoverflow.com/a/1526245/287923">https://stackoverflow.com/a/1526245/287923</a>的启发,但为了简化它,我实现了一个请求缓存,如下所示:</p>
<pre><code>from threading import currentThread
caches = {}
class RequestCache(object):
def set(self, key, value):
cache_id = hash(currentThread())
if caches.get(cache_id):
caches[cache_id][key] = value
else:
caches[cache_id] = {key: value}
def get(self, key):
cache_id = hash(currentThread())
cache = caches.get(cache_id)
if cache:
return cache.get(key)
return None
class RequestCacheMiddleware(object):
def process_response(self, request, response):
cache_id = hash(currentThread())
if caches.get(cache_id):
del(caches[cache_id])
return response
</code></pre>
<p><code>caches</code>是缓存字典的字典,通过<code>get</code>&;<code>set</code>方法访问。在呈现响应之后,中间件将清除<code>process_response</code>方法中当前线程的缓存。在</p>
<p>它是这样使用的:</p>
^{pr2}$